你可以cd
到YOUR_ENV/lib/pythonxx/site-packages/
看看,但有沒有方便的方法?如何在特定的virtualenv中創建安裝的軟件包列表?
pip freeze
列出安裝的所有軟件包,包括系統環境。
你可以cd
到YOUR_ENV/lib/pythonxx/site-packages/
看看,但有沒有方便的方法?如何在特定的virtualenv中創建安裝的軟件包列表?
pip freeze
列出安裝的所有軟件包,包括系統環境。
在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。目前我不知道爲什麼,但在你的系統上可能會有所不同。
列表列於virtualenv中所安裝的軟件包
步驟1:
workon ENVNAME
步驟2:
PIP凍結
它會顯示所有已安裝包和安裝包和
版本可以通過 pip freeze --local
或 pip list --local
只列出在virtualenv
包。 無論是否在virtualenv
中顯示全局站點包,此選項都可以工作。
請注意,限制virtualenv
不使用全局站點包不是問題的答案,因爲問題在於如何分離兩個列表,而不是如何限制我們的工作流以適應工具的侷限性。
致謝@ gvalkov的評論here。參看也this issue。
謝謝!在我的回答中,我試圖將你的偉大洞見與Sascha指出的核心相結合。 – nealmcb
事後看來,這絕對是幫助virtualenv的用戶不知道隔離系統軟件包的選項的pip命令。感謝您讓我意識到這一選擇,在閱讀與此主題相關的任何文檔時,我從來沒有遇到過這種情況。 –
如果您仍然對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
事後看來,這絕對是幫助virtualenv的用戶不知道隔離系統軟件包的選項的pip命令。感謝您讓我意識到這一選擇,在閱讀與此主題相關的任何文檔時,我從來沒有遇到過這種情況。 –
對不起,我忘了fault.I我當前的virtualenv ENV沒有使用' --no-site-packages'選項。然後,我用該選項創建了另一個ENV來測試它並且工作。感謝您的提醒。 – holys
這實際上並沒有回答這個問題,即:給定一個帶有站點包的virtualenv,我們如何過濾那些安裝在virtualenv中的。 –
這個答案對於通常使用'--no-site-packages'的人來說已經足夠了。鑑於「本地」標誌的知識不是必需的。但是你的回答肯定爲這個問題的讀者增加了價值。 –