2012-09-23 39 views
3

我有一個虛擬env爲我的django項目,但是當我點擊pip freeze時,我得到什麼必須是全球站點軟件包列表,包含太多的軟件包,比如ubuntu軟件包和許多不相關的東西。無論virtualenv是否活動,都會發生這種情況。我的網站包列表看起來有點苗條,所以我想知道venv是否一直在工作。Pip要求輸出全球包裹

(env)~/code/django/ssc/dev/env/lib/python2.7/site-packages> ls 
django 
Django-1.4-py2.7.egg-info 
easy-install.pth 
pip-1.0.2-py2.7.egg 
setuptools-0.6c11-py2.7.egg 
setuptools.pth 

我的問題是什麼?

回答

3

如果你的虛擬環境可以訪問系統的站點包目錄(即你使用的是virtualenv --system-site-packages),那麼這個列表是比較長的,這是正常的。

比較如下:

$ virtualenv --system-site-packages v1 && source v1/bin/activate 
$ (v1) pip freeze | wc -l # 100 

$ virtualenv v2 && source v2/bin/activate 
$ (v2) pip freeze | wc -l # 2 

你可以嘗試重新創建的virtualenv?

另外,增加了no-global-site-packages.txt文件應該告訴PIP忽略全球站點包:

$ touch $VIRTUAL_ENV/lib/python${version}/no-global-site-packages.txt 
+0

你的意思是重新設置的virtualenv,並重新安裝我用所有的包?我想我沒有選擇吧?但我確定我沒有使用「system-site-packages」。我遵循這個:http://www.jeffknupp.com/blog/2012/02/09/starting-a-django-project-the-right-way/你能想到爲什麼會發生這種情況?我將通過刪除env文件夾並簡單地重新啓動它來重新創建虛擬env。我可以檢查它是否以某種方式使用系統站點包?我想通過檢查它是否包括他們在第一次凍結? – KindOfGuy

+1

我已經更新了答案,但實際上並沒有什麼特別的關於他們在文章中遵循的過程。檢查'no-global-site-packages.txt'應該會提供這些信息。 – gvalkov

+1

有一個'no-global-site-packages.txt'文件。但我的需求文件不應該包括像rhythmbox-ubuntuone == 3.0.0 sessioninstaller == 0.0.0 simplejson == 2.3.2 software-center-aptd-plugins == 0.0.0 ssh == 1.7.14 系統服務== 0.1.6 ubuntuone-沙發== 0.3.0 ubuntuone-安裝== 3.0.2 ubuntuone存儲協議== 3.0.2 我不明白這一點。我早就知道我受到了詛咒,但這一點並沒有加起來。 – KindOfGuy