Ein Vergleich der Ergebnisse zeigt Unterschiede:
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
In der Dokumentation von Pip heißt es
freeze Output installed packages in requirements format.
list List installed packages.
Aber was ist "Anforderungsformat" und warum pip list
wird eine umfassendere Liste erstellt als pip freeze
?
python
python-2.7
python-3.x
pip
nitrl
quelle
quelle
Antworten:
Wenn Sie a verwenden
virtualenv
, können Sie einerequirements.txt
Datei angeben , um alle Abhängigkeiten zu installieren.Eine typische Verwendung:
Die Pakete müssen in einem bestimmten Format vorliegen, um dies
pip
zu verstehenDas ist das "Anforderungsformat".
Hier
django==1.4.2
impliziert die Installationsversion (obwohl die neuestedjango
Version1.4.2
1.6.x ist). Wenn Sie nicht angeben==1.4.2
, wird die neueste verfügbare Version installiert.Weitere Informationen finden Sie in " Virtualenv and pip Basics " und in der offiziellen Dokumentation " Requirements File Format ".
quelle
pip list
alles aufgelistet undpip freeze
alles installiert wird , was von pip installiert wurde.pip install
wsgiref
.wsgiref.egg-info
in das Lib-Verzeichnis aufgenommen, weshalb pip davon weiß. Sie können es nicht mit pip [deinstallieren], und spätere Versionen von Python lassen die Metadatendatei weg, sodass sie nicht angezeigt wird.Um den zweiten Teil dieser Frage zu beantworten, die beiden Pakete gezeigt in ,
pip list
aber nichtpip freeze
sindsetuptools
(was easy_install ist) undpip
sich selbst.Es sieht
pip freeze
so aus, als würden keine Pakete aufgelistet, von denen pip selbst abhängt. Sie können das--all
Flag verwenden, um auch diese Pakete anzuzeigen.Aus der Dokumentation :
quelle
pip freeze
hat eine Option--all
, um auchpip, setuptools, distribute, wheel
anzuzeigenDer Hauptunterschied besteht darin, dass die Ausgabe von
pip freeze
in eine Datei "require.txt" kopiert und später zum Neuerstellen der "eingefrorenen" Umgebung verwendet werden kann.Mit anderen Worten, Sie können Folgendes ausführen:
pip freeze > frozen-requirements.txt
auf einem Computer und später auf einem anderen Computer oder in einer sauberen Umgebung:pip install -r frozen-requirements.txt
und Sie erhalten eine identische Umgebung mit genau denselben Abhängigkeiten wie in der ursprünglichen Umgebung, in der Sie sich befanden hat die Frozen-Requirements.txt generiert.quelle
Schauen Sie sich die Pip-Dokumentation an , in der die Funktionalität von beiden wie folgt beschrieben wird:
Pip-Liste
Pip einfrieren
Es gibt also zwei Unterschiede:
Das Ausgabeformat
freeze
gibt uns das Standardanforderungsformat an, mit dem späterpip install -r
Anforderungen installiert werden können.Ausgabeinhalt,
pip list
einschließlich bearbeitbarer Dateien, diepip freeze
dies nicht tun .quelle
pip list
zeigt ALLE Pakete.pip freeze
zeigt Pakete an, die SIE überpip
(oder installiert habenpipenv
Befehl bei Verwendung dieses Tools) in einem Anforderungsformat .Beachten Sie , dass beim Erstellen meines virtuellen Umschlags Setuptools , Pip und Wheel installiert sind
pipenv shell
. Diese Pakete wurden NICHT von mir installiert mitpip
:Überprüfen und vergleichen Sie nun die Ausgabe der jeweiligen Befehle, bei denen ich nur cool-lib und sampleproject installiert habe (von denen Pfefferkorn eine Abhängigkeit ist):
quelle