python - crear - ¿Por qué el congelamiento de pip informa algunos paquetes en un virtualenv nuevo creado con--no-site-packages?
virtualenv ubuntu (2)
Cuando creo un virtualenv nuevo, el pip freeze
muestra que tengo un par de paquetes instalados a pesar de que no he instalado nada en el entorno. Esperaba que la pip freeze
devolviera la salida vacía hasta después de mi primera pip install
en el entorno. wsgiref es parte de la biblioteca estándar , ¿no es así? ¿Por qué aparece?
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
Alguna información extra:
(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"
Cada vez que creas un virtualenv con --no-site-packages instala setuptools
o distribute
. Y la razón wsgiref
aparece wsgiref
es porque la biblioteca estándar de Python 2.5+ proporciona información de huevo a wsgiref
lib (y pip
no sabe si es stdlib o paquete de terceros).
Parece estar resuelto en Python3.3 +: http://bugs.python.org/issue12218
Para responder a una pregunta ligeramente diferente: puede excluir wsgiref
(y cualquier otro archivo .egg
similarmente problemático si tiene la mala suerte de tener alguno por alguna razón) al hacer un pip freeze -l
lugar de un pip freeze
de pip freeze
.
pip help freeze
describe esta opción:
-l, --local Si está en un virtualenv, no informe los paquetes instalados globalmente