web-dev-qa-db-fra.com

Pip gel vs liste de pip

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?

88
nitrl

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

93
karthikr

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

30
ForeverWintr

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.

24
Daniel Lahyani

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:

  1. 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.

  2. Contenu de sortie, pip list inclure les éditables qui pip freeze ne fait pas.

20
Serjik