繁体   English   中英

为什么 pip 冻结报告使用 --no-site-packages 创建的新虚拟环境中的一些包?

[英]Why does pip freeze report some packages in a fresh virtualenv created with --no-site-packages?

当我创建一个新的 virtualenv 时, pip freeze显示我安装了几个包,即使我没有在环境中安装任何东西。 我期待pip freeze返回空 output 直到我第一次pip install到环境中。 wsgiref 是标准库的一部分,不是吗,那它为什么会出现呢?

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 时,它都会安装setuptoolsdistribute 出现wsgiref的原因是因为 python 2.5+ 标准库向wsgiref lib 提供了 egg 信息(并且pip不知道它是 stdlib 还是第 3 方包)。

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

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

pip help freeze描述了这个选项:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM