2013-04-12 23 views

回答

6

在virtualenv中調用pip命令應列出隔離環境中可見/可用的包。請確保使用默認使用選項--no-site-packages的最新版本的virtualenv。這樣,使用virtualenv的目的就是創建一個python環境,而無需訪問安裝在系統python中的軟件包。

接下來,請確保您使用在virtualenv(YOUR_ENV/bin/pip)中提供的命令pip。或者只是激活的virtualenv(來源YOUR_ENV/bin/activate)作爲一種方便的方式來呼籲Python解釋器正確的命令或點子

~/Projects$ virtualenv --version 
1.9.1 

~/Projects$ virtualenv -p /usr/bin/python2.7 demoenv2.7 
Running virtualenv with interpreter /usr/bin/python2.7 
New python executable in demoenv2.7/bin/python2.7 
Also creating executable in demoenv2.7/bin/python 
Installing setuptools............................done. 
Installing pip...............done. 

~/Projects$ cd demoenv2.7/ 
~/Projects/demoenv2.7$ bin/pip freeze 
wsgiref==0.1.2 

~/Projects/demoenv2.7$ bin/pip install commandlineapp 
Downloading/unpacking commandlineapp 
Downloading CommandLineApp-3.0.7.tar.gz (142kB): 142kB downloaded 
Running setup.py egg_info for package commandlineapp 
Installing collected packages: commandlineapp 
Running setup.py install for commandlineapp 
Successfully installed commandlineapp 
Cleaning up... 

~/Projects/demoenv2.7$ bin/pip freeze 
CommandLineApp==3.0.7 
wsgiref==0.1.2 

是什麼在我的答案奇怪的是,包「的wsgiref」是的virtualenv內可見。它來自我的系統python。目前我不知道爲什麼,但在你的系統上可能會有所不同。

+0

對不起,我忘了fault.I我當前的virtualenv ENV沒有使用' --no-site-packages'選項。然後,我用該選項創建了另一個ENV來測試它並且工作。感謝您的提醒。 – holys

+3

這實際上並沒有回答這個問題,即:給定一個帶有站點包的virtualenv,我們如何過濾那些安裝在virtualenv中的。 –

+0

這個答案對於通常使用'--no-site-packages'的人來說已經足夠了。鑑於「本地」標誌的知識不是必需的。但是你的回答肯定爲這個問題的讀者增加了價值。 –

9

列表列於virtualenv中所安裝的軟件包

步驟1:

workon ENVNAME

步驟2:

PIP凍結

它會顯示所有已安裝包和安裝包和

19

版本可以通過 pip freeze --localpip list --local只列出在virtualenv包。 無論是否在virtualenv中顯示全局站點包,此選項都可以工作。

請注意,限制virtualenv不使用全局站點包不是問題的答案,因爲問題在於如何分離兩個列表,而不是如何限制我們的工作流以適應工具的侷限性。

致謝@ gvalkov的評論here。參看也this issue

+0

謝謝!在我的回答中,我試圖將你的偉大洞見與Sascha指出的核心相結合。 – nealmcb

+1

事後看來,這絕對是幫助virtualenv的用戶不知道隔離系統軟件包的選項的pip命令。感謝您讓我意識到這一選擇,在閱讀與此主題相關的任何文檔時,我從來沒有遇到過這種情況。 –

2

如果您仍然對virtualenv感到困惑,那麼您可能不會了解如何結合Ioannis和Sascha的答案中的重要提示。即這是您需要的基本命令:

/YOUR_ENV/bin/pip freeze --local 

這可以很容易地在其他地方使用。例如。這裏是一個方便和完整的答案,適合讓所有安裝在所有您通過virtualenvwrapper建立環境本地套餐:

cd ${WORKON_HOME:-~/.virtualenvs} 
for dir in *; do [ -d $dir ] && $dir/bin/pip freeze --local > /tmp/$dir.fl; done 
more /tmp/*.fl 
+1

事後看來,這絕對是幫助virtualenv的用戶不知道隔離系統軟件包的選項的pip命令。感謝您讓我意識到這一選擇,在閱讀與此主題相關的任何文檔時,我從來沒有遇到過這種情況。 –

相關問題