0

Django を virtualenv と一緒に運用サーバーにデプロイしていますが、サーバーで virtualenv をアクティブ化するのに問題があります。

source .../bin/activate

少し調査したところ、仮想環境にいるかどうかに応じて、pythonpath が変更されることがわかりました。

sys.path (virtualenv を有効化)

['',
'/.../virtualenv/test_path/bin',
'/.../virtualenv/test_path/local/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg',
'/.../virtualenv/test_path/local/lib/python2.7/site-packages/pip-1.2.1-py2.7.egg',
'/.../virtualenv/test_path/lib/python2.7',
'/.../virtualenv/test_path/lib/python2.7/plat-linux2',
'/.../virtualenv/test_path/lib/python2.7/lib-tk',
'/.../virtualenv/test_path/lib/python2.7/lib-old',
'/.../virtualenv/test_path/lib/python2.7/lib-dynload',
'/usr/lib/python2.7',
'/usr/lib/python2.7/plat-linux2',
'/usr/lib/python2.7/lib-tk',
'/.../virtualenv/test_path/local/lib/python2.7/site-packages',
'/.../virtualenv/test_path/local/lib/python2.7/site-packages/IPython/extensions']

sys.path (virtualenv をアクティブ化せずに):

['',
'/usr/local/bin',
'/usr/lib/python2.7',
'/usr/lib/python2.7/plat-linux2',
'/usr/lib/python2.7/lib-tk',
'/usr/lib/python2.7/lib-old',
'/usr/lib/python2.7/lib-dynload',
'/usr/local/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages/PIL',
'/usr/lib/python2.7/dist-packages/gst-0.10',
'/usr/lib/python2.7/dist-packages/gtk-2.0',
'/usr/lib/pymodules/python2.7',
'/usr/local/lib/python2.7/dist-packages/IPython/extensions']

virtualenv を指すように pythonpath を変更するだけで十分です

.../python2.7/site-packages

フォルダーを実行して、実行と同じ結果を得る

source .../bin/activate

?

4

1 に答える 1

2

いいえそうではありません。virtualenv は だけでなくsite-packages、隔離された python 環境全体に関するものです。

これを行うsource /path/to/venv/bin/activateだけで、$PATH環境変数が変更され、virtualenvbinディレクトリが最初のルックアップとして含まれるようになります。

直接呼び出すとpython、次のショートカットになります。

$ /path/to/venv/bin/python myscript.py

pipアクティブ化された virtualenvを呼び出すと、次のようになります。

$ /path/to/venv/bin/pip install XYZ
于 2012-12-15T14:22:42.367 に答える