92 votes

Comment puis-je faire une liste des paquets installés dans un certain virtualenv ?

Vous pouvez cd a YOUR_ENV/lib/pythonxx/site-packages/ et y jeter un coup d'œil, mais y a-t-il des moyens pratiques ?

pip freeze liste tous les paquets installés, y compris ceux de l'environnement système.

88voto

johntex Points 734

Vous ne pouvez lister que les paquets dans le virtualenv par pip freeze --local ou pip list --local . Cette option fonctionne indépendamment du fait que vous ayez des paquets de sites globaux visibles dans la section virtualenv .

Notez que le fait de restreindre la virtualenv ne pas utiliser les paquets de sites globaux n'est pas la réponse au problème, car la question est de savoir comment séparer les deux listes, et non comment contraindre notre flux de travail pour s'adapter aux limitations des outils.

Crédits pour le commentaire de @gvalkov aquí . Cf. également cette question .

33voto

Sascha Gottfried Points 1014

Appel à pip à l'intérieur d'un virtualenv devrait lister les paquets visibles/disponibles dans l'environnement isolé. Assurez-vous d'utiliser une version récente de virtualenv qui utilise l'option --no-site-packages par défaut. De cette façon, le but de l'utilisation de virtualenv est de créer un environnement python sans accès aux paquets installés dans le système python.

Ensuite, assurez-vous d'utiliser pip fournie dans le virtualenv ( YOUR_ENV/bin/pip ). Ou simplement activer le virtualenv (source YOUR_ENV/bin/activate ) comme un moyen pratique d'appeler les commandes appropriées pour l'interpréteur python ou pip

~/Projects$ virtualenv --version
1.9.1

~/Projects$ virtualenv -p /usr/bin/python2.7 demoenv2.7
Running virtualenv with interpreter /usr/bin/python2.7
New python executable in demoenv2.7/bin/python2.7
Also creating executable in demoenv2.7/bin/python
Installing setuptools............................done.
Installing pip...............done.

~/Projects$ cd demoenv2.7/
~/Projects/demoenv2.7$ bin/pip freeze
wsgiref==0.1.2

~/Projects/demoenv2.7$ bin/pip install commandlineapp
Downloading/unpacking commandlineapp
Downloading CommandLineApp-3.0.7.tar.gz (142kB): 142kB downloaded
Running setup.py egg_info for package commandlineapp
Installing collected packages: commandlineapp
Running setup.py install for commandlineapp
Successfully installed commandlineapp
Cleaning up...

~/Projects/demoenv2.7$ bin/pip freeze
CommandLineApp==3.0.7
wsgiref==0.1.2

Ce qui est étrange dans ma réponse est que le paquet 'wsgiref' est visible dans le virtualenv. Il provient de mon système python. Actuellement, je ne sais pas pourquoi, mais peut-être que c'est différent sur votre système.

18voto

errakesh Points 156

Liste les paquets installés dans le virtualenv

étape 1 :

nom de l'environnement de travail

étape 2 :

gel des pip

il affichera tous les paquets installés et les paquets installés et les versions

16voto

Punnerud Points 362

Dans Python3

pip list

Le venv vide est

Package    Version
---------- ------- 
pip        19.2.3 
setuptools 41.2.0

Pour créer un nouvel environnement

python3 -m venv your_foldername_here

Activez

cd your_foldername_here
source bin/activate

Désactiver

deactivate

Vous pouvez également vous placer dans le dossier et donner à l'environnement virtuel un nom/dossier (python3 -m venv nom_de_venv).

Venv est un sous-ensemble de virtualenv qui est livré avec Python après la version 3.3.

8voto

nealmcb Points 1223

Si vous êtes toujours un peu confus au sujet virtualenv vous ne saurez peut-être pas comment combiner les excellents conseils des réponses de Ioannis et Sascha. C'est-à-dire que c'est la commande de base dont vous avez besoin :

/YOUR_ENV/bin/pip freeze --local

Cela peut être facilement utilisé ailleurs. Par exemple, voici une réponse pratique et complète, adaptée à l'installation de tous les paquets locaux dans tous les environnements que vous configurez via virtualenvwrapper :

cd ${WORKON_HOME:-~/.virtualenvs}
for dir in *; do [ -d $dir ] && $dir/bin/pip freeze --local >  /tmp/$dir.fl; done
more /tmp/*.fl

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