问题描述
当我创建一个新的virtualenv时,pip freeze
显示我安装了几个软件包,即使我没有在环境中安装任何东西。我期待pip freeze
返回空输出,直到我的第一个pip install
进入环境之后。 wsgiref is part of the standard library不是它,为什么它会出现呢?
day@garage:~$ mkdir testing
day@garage:~$ cd testing
day@garage:~/testing$ virtualenv --no-site-packages .
New python executable in ./bin/python
Installing distribute..........................................................
...............................................................................
.........................................done.
day@garage:~/testing$ . bin/activate
(testing)day@garage:~/testing$ pip freeze
distribute==0.6.10
wsgiref==0.1.2
一些额外的信息:
(testing)day@garage:~/testing$ pip --version
pip 0.7.2 from /home/day/testing/lib/python2.7/site-packages/pip-0.7.2-py2.7.eg
g (python 2.7)
(testing)day@garage:~/testing$ deactivate
day@garage:~/testing$ virtualenv --version
1.4.9
day@garage:~/testing$ which virtualenv
/usr/bin/virtualenv
day@garage:~/testing$ dpkg -S /usr/bin/virtualenv
python-virtualenv: /usr/bin/virtualenv
day@garage:~/testing$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=11.04
DISTRIB_CODENAME=natty
DISTRIB_DESCRIPTION="Ubuntu 11.04"
最佳解决方法
每次使用–no-site-packages创建virtualenv时,它都会安装setuptools
或distribute
。而wsgiref
出现的原因是因为python 2.5+标准库向wsgiref
lib提供egg信息(而pip
不知道它是stdlib还是第三方软件包)。
它似乎在Python3.3 +:http://bugs.python.org/issue12218上得到解决
次佳解决方法
要回答一个稍微不同的问题:您可以通过执行pip freeze -l
而不是pip freeze
来排除wsgiref
(以及任何其他类似问题的.egg
文件,如果您因某些原因而不幸有任何问题)。
pip help freeze
描述了这个选项:
-l, –local If in a virtualenv, do not report globally-installed packages