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