Подтвердить что ты не робот

Почему pip freeze сообщает о некоторых пакетах в новом virtualenv, созданном с -no-site-пакетами?

Когда я создаю новый virtualenv, pip freeze показывает, что у меня установлено несколько пакетов, хотя я ничего не установил в среде. Я ожидал, что pip freeze вернет пустой вывод до моего первого pip install в среду. wsgiref является частью стандартной библиотеки, не так ли, поэтому почему он вообще появляется?

[email protected]:~$ mkdir testing
[email protected]:~$ cd testing
[email protected]:~/testing$ virtualenv --no-site-packages .
New python executable in ./bin/python
Installing distribute..........................................................
...............................................................................
.........................................done.
[email protected]:~/testing$ . bin/activate
(testing)[email protected]:~/testing$ pip freeze
distribute==0.6.10
wsgiref==0.1.2

Дополнительная информация:

(testing)[email protected]:~/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)[email protected]:~/testing$ deactivate
[email protected]:~/testing$ virtualenv --version
1.4.9
[email protected]:~/testing$ which virtualenv
/usr/bin/virtualenv
[email protected]:~/testing$ dpkg -S /usr/bin/virtualenv
python-virtualenv: /usr/bin/virtualenv
[email protected]:~/testing$ cat /etc/lsb-release 
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=11.04
DISTRIB_CODENAME=natty
DISTRIB_DESCRIPTION="Ubuntu 11.04"
4b9b3361

Ответ 1

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

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

Ответ 2

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

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

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