2012-09-23 68 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