Une comparaison des résultats révèle des différences:
user@user-VirtualBox:~$ pip list
feedparser (5.1.3)
pip (1.4.1)
setuptools (1.1.5)
wsgiref (0.1.2)
user@user-VirtualBox:~$ pip freeze
feedparser==5.1.3
wsgiref==0.1.2
La documentation de Pip
freeze Output installed packages in requirements format.
list List installed packages.
mais qu'est-ce que le "format des exigences" et pourquoi pip list
générer une liste plus complète que pip freeze
?
Lorsque vous utilisez un virtualenv
, vous pouvez spécifier un requirements.txt
fichier pour installer toutes les dépendances.
Un usage typique:
$ pip install -r requirements.txt
Les paquets doivent être dans un format spécifique pour que pip
puisse comprendre, ce qui est
feedparser==5.1.3
wsgiref==0.1.2
Django==1.4.2
...
C'est le "format des exigences".
Ici, Django==1.4.2
implique l'installation Django
version 1.4.2
_ (même si le dernier est 1.6.x). Si vous ne spécifiez pas ==1.4.2
, la dernière version disponible serait installée.
Vous pouvez en savoir plus dans " Bases de Virtualenv et pip) " et dans la documentation officielle " Format de fichier requis ".
Pour répondre à la deuxième partie de cette question, les deux paquets montrés dans pip list
mais non pip freeze
sont setuptools
(ce qui est easy_install) et pip
lui-même.
On dirait pip freeze
_ ne répertorie pas les paquets dont dépend le pip lui-même. Vous pouvez utiliser le --all
drapeau pour montrer aussi ces paquets.
De la documentation :
--all
Ne sautez pas ces paquets dans la sortie: pip, setuptools, distribution, wheel
La principale différence est que la sortie de pip freeze
Peut être transférée dans un fichier Requirements.txt et utilisée ultérieurement pour reconstruire l'environnement "gelé".
En d’autres termes, vous pouvez exécuter: pip freeze > frozen-requirements.txt
Sur une machine, puis plus tard sur une autre machine ou sur un environnement propre, vous pouvez effectuer: pip install -r frozen-requirements.txt
Et vous obtiendrez un environnement identique avec le résultat exact. mêmes dépendances que celles que vous aviez dans l’environnement d’origine où vous avez généré le fichier frozen-Requirements.txt.
Regardez la documentation de pépin , qui décrit les fonctionnalités des deux:
liste de pips
Liste les paquets installés, y compris les éditables.
pip gel
Affiche les packages installés au format des exigences.
Donc, il y a deux différences:
Format de sortie, freeze
nous donne le format d’exigence standard pouvant être utilisé ultérieurement avec pip install -r
pour installer la configuration requise à partir de.
Contenu de sortie, pip list
inclure les éditables qui pip freeze
ne fait pas.