PIP freeze vs liste pip
Une comparaison des sorties 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 indique
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ère-t-il une liste plus complète que pip freeze
?
4 réponses
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 pip
à comprendre, 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 installer django
version 1.4.2
(même si la dernière est la 1.6.x).
Si vous ne spécifiez pas ==1.4.2
, la dernière version disponible sera installée.
Vous pouvez en savoir plus dans "bases Virtualenv et pip ", et la documentation officielle "Requirements File Format".
Pour répondre à la deuxième partie de cette question, les deux paquets indiqué dans pip list
, mais pas pip freeze
sont setuptools
(qui est easy_install) et pip
lui-même.
Il semble que pip freeze
ne Liste tout simplement pas les paquets dont pip lui-même dépend. Vous pouvez utiliser l'indicateur --all
pour afficher également ces paquets.
À Partir de la documentation:
--all
Ne sautez pas ces paquets dans la sortie: pip, setuptools, distribute, wheel
Regardez la documentation pip , qui décrit les fonctionnalités des deux comme:
Liste Pip
Liste les paquets installés, y compris les modifiables.
PIP freeze
Affiche les paquets installés au format requis.
Il y a donc deux différences:
Format de sortie,
freeze
nous donne le format d'exigence standard qui peut être utilisé plus tard avecpip install -r
pour installer les exigences de.Le contenu de sortie,
pip list
inclut les modifiables quepip freeze
Ne contient pas.
La principale différence est que la sortie de pip freeze
peut être déversée dans une configuration requise.fichier txt et utilisé plus tard 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 un autre ordinateur ou sur un environnement propre, vous pouvez le faire:
pip install -r frozen-requirements.txt
et vous obtiendrez un environnement identique avec exactement les mêmes dépendances installées que dans l'environnement d'origine où vous avez généré les exigences gelées.txt.