为什么点击冻结报告一些新的virtualenv使用–no-site-packages创build的包?

当我创build一个新的virtualenv时, pip freeze显示我已经安装了一些软件包,即使我没有在环境中安装任何东西。 我期待的pip freeze返回空输出,直到我的第一个pip install到环境中。 wsgiref是标准库的一部分,是不是它为什么显示出来呢?

一天@车库:〜$ mkdirtesting
一天@车库:〜$ cdtesting
 day @ garage:〜/ testing $ virtualenv --no-site-packages。
 ./bin/python中的新的python可执行文件
安装分发................................................ ..........
 .................................................. .............................
 .........................................完成。
 day @ garage:〜/ testing $。 斌/启动
 (testing)day @ garage:〜/ testing $ pip freeze
分发== 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 =整洁的
 DISTRIB_DESCRIPTION =“Ubuntu 11.04”

每次你用–no-site-packages创build一个virtualenv,它会安装setuptoolsdistribute 。 而wsgiref出现的原因是因为python 2.5+标准库向wsgiref lib提供了蛋信息(并且pip不知道它是stdlib还是第三方包)。

这似乎是在Python3.3 +上解决: http ://bugs.python.org/issue12218

要回答一个稍微不同的问题:通过执行pip freeze -l而不是pip freeze可以排除wsgiref (以及任何其他类似问题的.egg文件,如果您不幸有任何原因)。

pip help freeze描述这个选项:

-l,–local如果在virtualenv中,不要报告全局安装的软件包