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

52

Когда я создаю новый 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"
  • 0
    Распространение - это то, что предоставляет сам pip, поэтому, если вы хотите использовать pip для установки вещей в вашей virtualenv, вам нужно начать с pip. Пипс зависит от wsgiref.
  • 3
    Пипс не зависит от wsgiref
Теги:
pip
virtualenv

2 ответа

42
Лучший ответ

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

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

  • 0
    Большое спасибо. +1 за 3.3 багреф :)
  • 0
    Так безопасно ли удалять wsgiref? Спасибо за информацию!
Показать ещё 3 комментария
29

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

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

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

  • 2
    Спасибо, это полезно.
  • 0
    распространять все равно будет в списке, хотя ...
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню