簡體   English   中英

如何檢查virtualenv是否使用'--no-site-packages'創建?

[英]How to check whether virtualenv was created with '--no-site-packages'?

有時我得到錯誤,我懷疑是我的Django應用程序使用全局安裝的Python模塊/ Django應用程序而不是其virtualenv中的那些。

有沒有辦法檢查我的應用程序的virtualenv是否使用'--no-site-packages'創建而不必刪除它,然后重新創建如下?

deactivate
rmvirtualenv my_env
mkvirtualenv my_env --no-site-packages
workon my_env
pip install -r requirements.txt

當然必須有更好的方法! 謝謝。

當您使用--no-site-packages創建虛擬環境時, <env>/lib/pythonX.X/有一個名為no-global-site-packages.txt --no-site-packages

剛試過virtualenv 1.7:

% virtualenv --no-site-packages env.without
% virtualenv --system-site-packages env.with

% find env.without | sed 's/env.without//' > files.without
% find env.with | sed 's/env.with//' > files.with

% diff files.with*
230a231
> /lib/python3.2/no-global-site-packages.txt

一種簡單的方法是打開交互式python shell並執行import somemodule; print somemodule import somemodule; print somemodule ,然后檢查導入該模塊的路徑。

>>> import flask; print flask
<module 'flask' from '/home/xxx/dev/xxx/env/lib/python2.7/site-packages/flask/__init__.pyc'>

>>> import flask; print flask
<module 'flask' from '/usr/lib64/python2.7/site-packages/flask/__init__.pyc'>

@ Rob的解決方案適用於較新版本,我查看了代碼:)。

如果你有一個舊的(如我的1.4.5),你可以檢查python路徑。 如果路徑中有默認的“site-packages”目錄(例如/ usr / lib / python / site-packages),則使用 site-packages創建virtualenv。

您可以從以下內容中查看:

for p in sys.path:
   if p.find("site-packages") >= 0:
     print p

如果您有--no-site-packages ,那么您的所有路徑都將是:

/home/user/virtualenv/myenv/lib/python2.6/site-packages/distribute-0.6.10-py2.6.egg
/home/user/virtualenv/myenv/lib/python2.6/site-packages/pip-1.0.2-py2.6.egg
/home/user/virtualenv/myenv/lib/python2.6/site-packages

否則,你會有類似的東西:

/home/user/virtualenv/myenv/lib/python2.6/site-packages/distribute-0.6.10-py2.6.egg
/home/user/virtualenv/myenv/lib/python2.6/site-packages/pip-1.0.2-py2.6.egg
/home/user/virtualenv/myenv/lib/python2.6/site-packages
/usr/local/lib/python2.6/site-packages

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM