关于virtualenv:输出全局包的Pip要求

Pip requirements outputting global packages

我对我的Django项目有一个虚拟的env,但是当我点击pip freeze时,我得到了一个必须是全球站点包列表的内容,包括太多的包,比如Ubuntu包和很多不相关的东西。无论virtualenv是否处于活动状态,都会发生这种情况。我的网站包列表看起来也有点苗条,所以我想知道Venv是否一直在工作。

1
2
3
4
5
6
7
(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

我的问题是什么?


如果您的虚拟环境可以访问系统的站点包目录(即您使用了virtualenv --system-site-packages),那么列表很长是正常的。

比较以下各项:

1
2
3
4
5
$ 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忽略全局站点包:

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