2011-07-08 14 views
52

Cuando creo un virtualenv nuevo, pip freeze muestra que tengo un par de paquetes instalados aunque no haya instalado nada en el entorno. Esperaba que pip freeze devolviera la salida vacía hasta después de mi primer pip install en el entorno. wsgiref is part of the standard library ¿no es así, entonces, por qué aparece?¿Por qué el congelamiento de pip informa algunos paquetes en un virtualenv nuevo creado con --no-site-packages?

 
[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 

Alguna información adicional:

 
(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" 
+0

distribuir es lo que proporciona pip en sí, por lo que si desea ser capaz de usar pip para instalar cosas en su virtualenv necesita comenzar con pip. pip depende de wsgiref. –

+3

pip no depende de wsgiref –

Respuesta

44

Cada vez que se crea un virtualenv con --no-site-packages que instala setuptools o distribute. Y la razón por la que 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 que hay que resolver en Python3.3 +: http://bugs.python.org/issue12218

+0

Muchas gracias. +1 por 3.3 bugref :) – Day

+0

¿Entonces es seguro eliminar wsgiref? Gracias por la info! – Paolo

+1

No, no es seguro eliminarlo, ya que 'wsgiref' es parte de la biblioteca estándar de python: http://docs.python.org/library/wsgiref.html –

29

para responder a una pregunta un poco diferente: puede excluir wsgiref (y cualquier otro .egg archivos de manera similar problemático si tienes la mala suerte de tener alguna por alguna razón) haciendo pip freeze -l en lugar de pip freeze.

pip help freeze describe esta opción:

-l, --local Si en un virtualenv, no reportan los paquetes instalados a nivel mundial-

+2

Gracias que es útil. – Day

+0

distribuir todavía se enumerará, aunque ... –

+2

me llevó demasiado tiempo para encontrar esta respuesta. Necesitaba el '-l' – blockloop

Cuestiones relacionadas