52 votes

Pourquoi pip freeze signale-t-il certains paquets dans un virtualenv frais créé avec --no-site-packages ?

Lorsque je crée un nouveau virtualenv, pip freeze montre que j'ai quelques paquets installés alors que je n'ai rien installé dans l'environnement. Je m'attendais à ce que pip freeze de retourner une sortie vide jusqu'à ce que mon premier pip install dans l'environnement. wsgiref fait partie de la bibliothèque standard Ce n'est pas le cas, alors pourquoi est-ce que ça apparaît tout court ?

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

Quelques informations supplémentaires :

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

44voto

Hugo Tavares Points 5020

Chaque fois que vous créez un virtualenv avec --no-site-packages il installe setuptools o distribute . Et la raison wsgiref apparaît parce que la bibliothèque standard de python 2.5+ fournit des informations sur les œufs à wsgiref lib (et pip ne sait pas si c'est stdlib ou un paquet tiers).

Le problème semble être résolu sur Python3.3+ : http://bugs.python.org/issue12218

29voto

Glyph Points 17756

Pour répondre à une question légèrement différente : vous pouvez exclure wsgiref (et tout autre problème similaire .egg si vous avez la malchance d'en avoir pour une raison quelconque) en faisant pip freeze -l au lieu de pip freeze .

pip help freeze décrit cette option :

-l, --local Si dans un virtualenv, ne pas signaler les paquets installés globalement

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X