Ist es mit pip möglich herauszufinden, welche Version eines Pakets derzeit installiert ist?
Ich weiß davon, pip install XYZ --upgrade
aber ich frage mich, ob es so etwas gibt pip info XYZ
. Wenn nicht, was wäre der beste Weg, um festzustellen, welche Version ich gerade verwende.
show
Befehl in pip: github.com/pypa/pip/issues/33Antworten:
Ab Pip 1.3 gibt es einen
pip show
Befehl.In älteren Versionen
pip freeze
undgrep
sollte den Job gut machen.quelle
save
Name verwenden.pip show pip
, um die Versionsinformationen von pip zu erhalten, anstattpip --version
wie erwartet.pip freeze
hat den Vorteil, dass bearbeitbare VCS-Checkout-Versionen korrekt angezeigt werden, diespip show
jedoch nicht.Ich habe gerade eine Pull-Anfrage in Pip mit der Verbesserung gesendet, die Hugo Tavares sagte:
(Specloud als Beispiel)
quelle
Pip 1.3 hat jetzt auch einen Listenbefehl :
quelle
pip list
generisch und__version__
nicht. Ich habe auch gesehenversion()
undget_version()
für die importierte.und mit --outdated als zusätzlichem Argument erhalten Sie die aktuelle und die neueste Version der von Ihnen verwendeten Pakete:
Kombinieren Sie also mit der Antwort von AdamKG:
Überprüfen Sie auch die Pip-Tools : https://github.com/nvie/pip-tools
quelle
Sie können auch installieren
yolk
und dann ausführen,yolk -l
was auch eine schöne Ausgabe liefert. Folgendes bekomme ich für meine kleine virtuelle Umgebung:quelle
Sie können den Befehl grep verwenden, um dies herauszufinden.
Beispiel:
zeigt nur die Versionen an.
quelle
Der einfachste Weg ist folgender:
quelle
__version__
im Quellcode definiert wurden. Viele Pakete nicht.import
und der Ausgabe vonpip freeze
.Es gibt auch ein Tool namens,
pip-check
das Ihnen einen schnellen Überblick über alle installierten Pakete und deren Aktualisierungsstatus gibt:Ich habe es selbst nicht benutzt. bin nur darauf gestoßen und diese SO-Frage in schneller Folge, und da sie nicht erwähnt wurde ...
quelle
Unter Windows können Sie folgende Befehle ausführen:
Ausgabe:
quelle
Die Python-Funktion gibt nur die Paketversion in einem maschinenlesbaren Format zurück:
Vor Python 3.8:
Das Bash-Äquivalent (hier auch von Python aufgerufen) wäre viel komplexer (aber robuster - siehe Vorsicht unten):
Beispielnutzung:
Beachten Sie, dass der
pkg_name
Parameter in beiden Fällen den Paketnamen in dem Format enthalten sollte, das von zurückgegebenpip freeze
und nicht verwendet wirdimport
, z. B.scikit-learn
nichtsklearn
oderFlask-Caching
nichtflask_caching
.Beachten Sie, dass das Aufrufen
pip freeze
in der Bash-Version zwar ineffizient erscheint, sich jedoch nur diese Methode als ausreichend robust erweist, um Besonderheiten und Inkonsistenzen bei der Paketbenennung zu vermeiden (z. B. Unterstriche gegenüber Bindestrichen, Small- und Large-Caps und Abkürzungen wiesklearn
vsscikit-learn
).Achtung: In komplexen Umgebungen können beide Varianten überraschende Versionsnummern zurückgeben, die nicht mit dem übereinstimmen, was Sie tatsächlich erhalten können
import
.Ein solches Problem tritt auf, wenn andere Versionen des Pakets in einem Benutzerunterordner versteckt sind
site-packages
. Zur Veranschaulichung der Gefahren bei der Verwendungversion()
hier eine Situation, auf die ich gestoßen bin:Ein weiteres Problem besteht darin, dass einige von Conda installierte Pakete in derselben Umgebung installiert sind. Wenn sie Abhängigkeiten mit Ihren von Pip installierten Paketen gemeinsam nutzen und sich die Versionen dieser Abhängigkeiten unterscheiden, erhalten Sie möglicherweise Downgrades Ihrer von Pip installierten Abhängigkeiten.
Zur Veranschaulichung war die neueste Version von
numpy
PyPI am 04-01-2020 1.18.0, während gleichzeitig Anacondasconda-forge
Kanal nur die Version 1.17.3numpy
als neueste Version hatte . Wenn Sie also einbasemap
Paket mit conda (als zweites) installiert haben, wird Ihre zuvornumpy
per Pip installierte Version von conda auf 1.17.3 herabgestuft, und Version 1.18.0 ist für dieimport
Funktion nicht mehr verfügbar . In diesem Fallversion()
wäre richtig undpip freeze
/ oderconda list
falsch:quelle
importlib.metadata.version('NameOfProject')
? docs.python.org/3/library/…from importlib_metadata import version; version('Flask-Caching')
python -c "import pkg_resources; print(pkg_resources.get_distribution('lightgbm').version)"
?version()
immer noch die früheste (älteste) (2.2.3) zurückgegeben wird. Sie können dieses Ergebnis replizieren, indem Sie beide Versionen mit dem--user
Switch installieren , aber denlightgbm-2.2.3.dist-info
Ordner manuell beibehalten, um beide zusammen zu haben, wie oben aufgeführt (pip würde ihn normalerweise entfernen - bis dies nicht der Fall ist).pip show funktioniert in Python 3.7:
quelle
So verwenden Sie Python-Code:
Verwenden von
importlib.metadata.version
Python ≥3,8
Python ≤3,7
(mit
importlib_metadata.version
)Verwenden von
pkg_resources.Distribution
Gutgeschrieben auf Kommentare von sinoroc und mirekphd .
quelle
Für Windows können Sie
Öffnen Sie cmd und geben Sie Python ein. Drücken Sie die Eingabetaste.
Geben Sie den Import ein und drücken Sie die Eingabetaste.
Geben Sie ._version__ ein und drücken Sie die Eingabetaste.
Wie Sie im Screenshot hier sehen können, verwende ich diese Methode zum Überprüfen der Version des seriellen Moduls.
quelle
In Frage wird nicht erwähnt, welches Betriebssystem Benutzer verwendet (Windows / Linux / Mac)
Da gibt es einige Antworten, die unter Mac und Linux einwandfrei funktionieren.
Der folgende Befehl kann verwendet werden, wenn der Benutzer versucht, die Version eines Python-Pakets unter Windows zu finden.
Verwenden Sie in PowerShell den folgenden Befehl:
pip list | findstr <PackageName>
Beispiel:-
pip list | findstr requests
Ausgabe :
requests 2.18.4
quelle