Когда я создаю новый 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"
Каждый раз, когда вы создаете virtualenv с --no-site-пакетами, он устанавливает setuptools
или distribute
. И причина, по которой возникает wsgiref
, заключается в том, что стандартная библиотека python 2.5+ предоставляет информацию о яйцах в wsgiref
lib (и pip
не знает, является ли это stdlib или сторонним пакетом).
Кажется, он решен на Python3.3 +: http://bugs.python.org/issue12218
Чтобы ответить на несколько иной вопрос: вы можете исключить wsgiref
(и любые другие аналогично-проблемные файлы .egg
, если вам почему-то не хватает, чтобы по каким-либо причинам), выполнив pip freeze -l
вместо pip freeze
.
pip help freeze
описывает эту опцию:
-l, --local Если в virtualenv не сообщать глобально установленные пакеты