4

virtualenvPythonツールを使用して新しい仮想環境を作成しました。

virtualenv venv

次に、仮想環境をアクティブにしました

source venv/bin/activate

それから私はやったpip freeze、これは私が得たものです:

(venv)$ pip freeze
Flask==0.10.1
Werkzeug==0.9.6
itsdangerous==0.24
lxml==3.4.0
numpy==1.9.1
pdir==0.2.2
virtualenv==1.11.6
wsgiref==0.1.2

仮想環境に明示的に何もインストールしていないのに、どれだけ多くのライブラリがインストールされたのか疑問に思っています。

UPDATE 1 :いくつかの回答が示唆されたときvirtualenv --no-site-packages、ステップ1でも使用して新しいvenvを作成しましたが、同じ問題が続きました。あたかも引数を使用してもまったく効果がなかったかのように。

更新 2 : 問題を解決できたので、以下に私の経験を投稿しました。コメントで指摘されているように; ここに関連する質問があります。link、それは私が問題を解決するのを助けました.

4

4 に答える 4

1

問題を解決できました。~/.bash_profile ファイルで。問題を引き起こしている次の行がありました。

export PYTHONPATH=/usr/local/lib/python2.7/site-packages:$PYTHONPATH

この関連する質問への回答で指摘されているように、Martin Lewis は--no-site-packages、標準の site-packages ディレクトリを sys.path から削除します。ただし、標準の Python パスに存在するその他のものはそのまま残ります。

PS: virtualenv がこのように機能する理由はまだわかりません。PYTHONPATH にあるパッケージを含める理由。しかし、少なくともこれを知ることで私の問題は解決します。

于 2014-11-24T10:28:31.560 に答える
0

ドキュメントを参照してください- --system-site-packages オプション:

でビルドするとvirtualenv --system-site-packages ENV、仮想環境は /usr/lib/python2.7/site-packages (またはグローバルな site-packages ディレクトリがある場所) からパッケージを継承します。

これは、グローバルな site-packages ディレクトリを制御でき、そこにあるパッケージに依存したい場合に使用できます。グローバル システムから分離する場合は、このフラグを使用しないでください。

これらのライブラリは、システムに既にインストールされています。を指定しない限り--no-site-packages、継承されます。

于 2014-11-24T09:53:23.320 に答える