Почему pip freeze сообщает о некоторых пакетах в новом virtualenv, созданном с помощью --no-site-packages? - PullRequest
52 голосов
/ 08 июля 2011

Когда я создаю новый virtualenv, pip freeze показывает, что у меня установлено несколько пакетов, хотя я ничего не установил в среду. Я ожидал, что pip freeze вернет пустой вывод до тех пор, пока мой первый 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"

Ответы [ 2 ]

44 голосов
/ 09 июля 2011

Каждый раз, когда вы создаете virtualenv с --no-site-packages, он устанавливает setuptools или distribute. Причина появления wsgiref заключается в том, что стандартная библиотека python 2.5+ предоставляет информацию о яйцах в wsgiref lib (а pip не знает, является ли это пакетом stdlib или пакетом стороннего производителя).

Кажется, это решено на Python3.3 +: http://bugs.python.org/issue12218

29 голосов
/ 27 июня 2013

Чтобы ответить на немного другой вопрос: вы можете исключить wsgiref (и любые другие, аналогично проблемные .egg файлы, если вам не повезло иметь их по какой-либо причине), выполнив pip freeze -l вместо pip freeze.

pip help freeze описывает эту опцию:

-l, --local Если в virtualenv не сообщать о глобально установленных пакетах

...