2017-10-29 15 views
1

私のプロジェクトディレクトリ(仮想環境ディレクトリから1つ)にpipでインストールされたモジュールをインポートしようとすると、virtualenvに問題があります。VirtualEnv pythonのインポートはプロジェクトフォルダからは機能しません、virtualenvフォルダのみ

私のプロジェクト構造は;

\Project 
..\dev (virtual env) 
..test.py 

私はそれを含めるようにしようとすると、しかし、私はインポートエラーを取得し、私の仮想環境のコンテキスト内でピップ使用セメントをインストールしました。

私のプロジェクトフォルダのルートからです。

Project$ source dev/bin/activate 
(dev) Project$ pip list 
cement (2.10.2) 
pip (9.0.1) 
setuptools (36.6.0) 
wheel (0.30.0) 

すべてがうまく見えます。仮想環境ディレクトリに

(dev) Project$ python 
Python 2.7.10 (default, Feb 7 2017, 00:08:15) 
[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.34)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> from cement.core.foundation import CementApp 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "cement.py", line 1, in <module> 
    from cement.core.foundation import CementApp 
ImportError: No module named core.foundation 
>>> quit() 

だから私のCD。

(dev) Project$ cd dev/ 
(dev) dev$ python 
Python 2.7.10 (default, Feb 7 2017, 00:08:15) 
[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.34)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> from cement.core.foundation import CementApp 
>>> 

インポートはvirtualenvディレクトリ内で正常に動作します。

この動作は正しいですか? srcファイルをvirtualenvディレクトリに保存する必要はありますか?私の印象の下で、私のアプリはvirtualenvディレクトリの外側に住むことができたが、virtualenvの中にいったんインストールされたモジュールにアクセスするとアクティブになったのだろうか?

+1

いいえ、これは正しい動作ではありません。 virtualenvをアクティブにすると、あなたのプロジェクトの外でも 'python'を任意のディレクトリから実行でき、' cement.core.foundation import CementApp' * should *は動作するはずです。virtualenvディレクトリ内にソースファイルを絶対に移動しないでください。あなたのvirtualenvディレクトリが何らかの形で壊れているのではないかと思います。私はそれを再作成することをお勧めしますが、これは非常に簡単です。 – janos

+0

あなたの洞察をお寄せいただきありがとうございます。私は仮想環境を再現し、問題は解決しました。仮想環境は初めて正しく作成されてはいけません。再度、感謝します! – Jamie

答えて

1

この動作は正しいですか?

いいえ、これは正しい動作ではありません。 virtualenvを有効にすると、プロジェクトの外でもpythonを任意のディレクトリから実行でき、from cement.core.foundation import CementAppが動作するはずです。

srcファイルをvirtualenvディレクトリに保存する必要はありますか?

いいえ、絶対にソースファイルをvirtualenvディレクトリ内に移動しないでください。

私のアプリがvirtualenvディレクトリの外にあっても、インストールされたモジュールにアクセスすることができたという印象を受けたのは、virtualenvでアクティブだったモジュールですか?正しい、それべき仕事です

私が考えることができるのは、virtualenvディレクトリ(dev)が何らかの形で壊れているか破損していることだけです。私はそれを再作成することをお勧めしますが、これは非常に簡単です。

-1

これは正しい動作です。仮想環境内にプロジェクト関連のパッケージをインストールして、コンピュータ用の元のpython-pipのものと混同しないようにします。バージョンの不一致は、時には重大な問題であり、仮想環境を使用することを防ぐためです。

+1

これは間違っています。私はあなたが質問のいくつかの詳細を見逃したかもしれないと思う。 OPはvirtualenvを起動し、 'pip list'は利用可能なパッケージを表示しますが、彼は1つのディレクトリにはインポートできませんが、別のディレクトリにインポートすることはできません。それは普通ではありません。質問自体についての私のコメントも見てください。 – janos

+0

仮想環境からインポートが正常に動作します。しかし、仮想環境の外ではそうはなりません。どの部分を逃しましたか? – pissall

+0

仮想環境は、両方の実行でアクティブです。だから、彼の作業ディレクトリに関係なく動作するはずです。 – janos

関連する問題