Ich habe gerade die Python-Module installiert: construct
und statlib
mit setuptools
so:
# Install setuptools to be able to download the following
sudo apt-get install python-setuptools
# Install statlib for lightweight statistical tools
sudo easy_install statlib
# Install construct for packing/unpacking binary data
sudo easy_install construct
Ich möchte in der Lage sein, (programmgesteuert) ihre Versionen zu überprüfen. Gibt es ein Äquivalent zu python --version
Ich kann über die Befehlszeile ausgeführt werden?
Meine Python-Version ist 2.7.3
.
pip list
Antworten:
Ich schlage vor, pip anstelle von easy_install zu verwenden . Mit pip können Sie alle installierten Pakete und deren Versionen mit auflisten
In den meisten Linux-Systemen können Sie dies an
grep
(oderfindstr
unter Windows) weiterleiten, um die Zeile für das bestimmte Paket zu finden, an dem Sie interessiert sind:Für ein einzelnes Modul können Sie das
__version__
Attribut ausprobieren , es gibt jedoch Module ohne dieses Attribut :Da den Befehlen in Ihrer Frage das Präfix vorangestellt ist
sudo
, scheint es, dass Sie in der globalen Python-Umgebung installieren. Es wird dringend empfohlen , einen Blick in die virtuellen Umgebungsmanager von Python zu werfen , z. B. in virtualenvwrapperquelle
pip show lxml | grep Version
; Dies läuft viel schneller, da nur ein einziges Paket überprüft wird.pip list | grep lxml
grep
in Windows? Da Pip einfrieren | grep lxml funktioniert nicht bei Windwos.pip list | findstr lxml
Du kannst es versuchen
quelle
inspect
) haben__version__
leider kein Attribut.serial.VERSION
. Vielleicht gibt es auch einige andere häufig verwendete Module, die PEP 0396 nicht folgen: python.org/dev/peps/pep-0396print(contruct.__version__)
bei Verwendung von Python 3. *Verwenden Sie ein
pkg_resources
mit dersetuptools
Bibliothek verteiltes Modul . Beachten Sie, dass die Zeichenfolge, die Sie an dieget_distribution
Methode übergeben, dem PyPI-Eintrag entsprechen sollte.und wenn Sie es über die Befehlszeile ausführen möchten, können Sie Folgendes tun:
Beachten Sie, dass die Zeichenfolge, die Sie an die
get_distribution
Methode übergeben, der in PyPI registrierte Paketname und nicht der Modulname sein sollte, den Sie importieren möchten.Leider sind diese nicht immer gleich (zB du
pip install memcached
aberimport memcache
).quelle
__version__
.construct.version.full_version
pkg_resources.get_distrinbution
dies auch nicht immer funktioniert. Es gibt eineDistributionNotFound
Ausnahme mit der folgenden Fehlermeldung: "Die Verteilung 'the_package_name' wurde nicht gefunden und wird von der Anwendung benötigt"get_distribution
Ich denke, das kann helfen, aber zuerst das
show
Paket installieren , um es auszuführen,pip show
dann mit show die Version finden!quelle
pip: error: No command by the name pip show (maybe you meant "pip install show")
pip show PACKAGE | awk '/^Version: / {sub("^Version: ", ""); print}'
. Sie könnten wahrscheinlich mit einem einfacheren AWK-Skript davonkommen, aber das oben Genannte ist für alle Randfälle sicherer.pip show
wurde in Pip 1.2.1.post1 implementiert . Sie verwenden eine schrecklich veraltete Version von pip, also kein Wunder, dass Sie Probleme haben! Ich verwende derzeit Pip 7.1.2 . Wenn Sie durch etwas nicht aktualisiert werden können, können Sie es jederzeit lokal oder in einer virtuellen Umgebung installieren.Der bessere Weg, dies zu tun, ist:
Einzelheiten zu einem bestimmten Paket
pip show <package_name>
Für mehr Details:
>>> pip help
pip
sollte aktualisiert werden, um dies zu tun.Unter Windows empfiehlt der Befehl:
quelle
pip show scikit-learn
anstelle von verwendenpip show sklearn
. sklearn ist eine Kurzform, die während des Imports verwendet wird und nicht direkt erkannt wird,pip
dascikit-learn
das vollständige Paket nicht gelernt wirdsklearn
In Python3 mit Klammern um den Druck
quelle
__version__
Attribut.print
, genau wie(2)+(3)
bei5
. Wenn Sie ein Komma in Klammern haben, werden die Dinge möglicherweise etwas interessanter, obwohlprint
es irgendwie immer noch funktioniert.module.__version__
ist ein guter erster Versuch, aber es funktioniert nicht immer.Wenn Sie nicht berappen möchten und Pip 8 oder 9 verwenden, können Sie dennoch
pip.get_installed_distributions()
Versionen aus Python abrufen:Update: Die Lösung funktioniert hier in Pip 8 und 9, aber in Pip 10 wurde die Funktion von
pip.get_installed_distributions
nach verschoben ,pip._internal.utils.misc.get_installed_distributions
um explizit anzuzeigen, dass sie nicht für den externen Gebrauch bestimmt ist. Es ist keine gute Idee, sich darauf zu verlassen, wenn Sie pip 10+ verwenden.quelle
pip
, sollte dies immer funktionieren.Die vorherigen Antworten haben mein Problem nicht gelöst, aber dieser Code hat:
quelle
__version__
wenn es nicht definiert ist. Wenn dies nicht__version__
der Fall ist , erhalten Sie für das gewünschte Paket kein Ergebnis.__version__
Standardattribut hat ( python.org/dev/peps/pep-0396/#specification ), ist es ohne manuelle Untersuchung unmöglich zu wissen, wo und wie die Version enthalten ist.Sie können hierfür die
importlib_metadata
Bibliothek verwenden.Wenn Sie auf Python sind
<3.8
, installieren Sie es zuerst mit:Seit Python ist
3.8
es in der Standardbibliothek enthalten.Um dann die Version eines Pakets (in diesem Beispiel
lxml
) zu überprüfen, führen Sie Folgendes aus :Beachten Sie, dass dies nur für Pakete funktioniert, die über PyPI installiert wurden. Außerdem müssen Sie der
version
Methode einen Paketnamen als Argument übergeben und nicht einen Modulnamen, den dieses Paket bereitstellt (obwohl diese normalerweise identisch sind).quelle
Verwenden
dir()
Sie diese Option , um herauszufinden, ob das Modul überhaupt ein__version__
Attribut hat.quelle
Wenn die oben genannten Methoden nicht funktionieren, sollten Sie in Python Folgendes ausprobieren:
Siehe Python Tornado-Version herunterladen?
Beachten Sie, dass das
.version
für mich neben dem Tornado auch bei einigen anderen funktioniert hat.quelle
Fügen Sie zuerst Python und Pip zu Ihren Umgebungsvariablen hinzu. damit Sie Ihre Befehle an der Eingabeaufforderung ausführen können. Geben Sie dann einfach den Python- Befehl. Importieren Sie dann das Paket
->
import scrapy
Drucken Sie dann den Versionsnamen
->
print(scrapy.__version__)
Das wird definitiv funktionieren
quelle
__version__
Attribut.pip freeze
angezeigt wird, jedoch hat <Paket> .__ version_ funktioniert. Danke fürs Schreiben.Angenommen, wir verwenden Jupyter Notebook (wenn Sie Terminal verwenden, lassen Sie die Ausrufezeichen fallen):
1) wenn das Paket (zB xgboost) mit pip installiert wurde :
2) wenn das Paket (zB caffe) mit conda installiert wurde :
quelle
Einige Module haben keine
__version__
Attribute, daher ist es am einfachsten, das Terminal einzuchecken:pip list
quelle
In der Python 3.8-Version gibt es ein neues
metadata
Modul imimportlib
Paket, das dies ebenfalls kann.Hier ist ein Beispiel aus Dokumenten:
quelle
Ich schlage vor, eine
python
Shell im Terminal zu öffnen (in der Python-Version, die Sie interessiert), die Bibliothek zu importieren und ihr__version__
Attribut abzurufen.Anmerkung 1: Wir müssen die Python-Version berücksichtigen . Wenn wir verschiedene Versionen von Python installiert haben, müssen wir das Terminal in der Python-Version öffnen, an der wir interessiert sind. Wenn Sie beispielsweise das Terminal mit
python3.8
can öffnen (wird dies sicherlich tun ), erhalten Sie eine andere Version einer Bibliothek als mitpython3.5
oderpython2.7
.Hinweis 2: Wir vermeiden die Verwendung der
print
Funktion , da ihr Verhalten von Python2 oder Python3 abhängt. Wir brauchen es nicht, das Terminal zeigt den Wert des Ausdrucks an.quelle
Dies funktioniert auch in Jupyter Notebook unter Windows! Solange Jupyter über eine Bash-kompatible Befehlszeile wie Git Bash (MingW64) gestartet wird, können die in vielen Antworten angegebenen Lösungen mit einem winzigen Tweak in Jupyter Notebook auf Windows-Systemen verwendet werden.
Ich verwende Windows 10 Pro mit Python, das über Anaconda installiert ist, und der folgende Code funktioniert, wenn ich Jupyter über Git Bash starte (jedoch nicht, wenn ich über die Anaconda-Eingabeaufforderung starte).
Die Optimierung: Fügen Sie ein Ausrufezeichen (
!
) vorpip
, um es zu machen!pip
.quelle
Schnell Python - Programm alle packges zur Liste (Sie können es kopieren requirements.txt )
Die Ausgabe würde folgendermaßen aussehen:
quelle
(Siehe auch https://stackoverflow.com/a/56912280/7262247 )
Ich fand es ziemlich unzuverlässig, die verschiedenen verfügbaren Tools zu verwenden (einschließlich des besten , das in der Antwort
pkg_resources
von Jakub Kukul erwähnt wurde ), da die meisten nicht alle Fälle abdecken . Zum BeispielDa wir einen zuverlässigen Weg , um die Version des benötigten jedes Paket, Modul oder Submodul, landete ich schriftlich bis getversion . Es ist ganz einfach zu bedienen:
Einzelheiten finden Sie in der Dokumentation .
quelle
So erhalten Sie eine Liste der nicht standardmäßigen (Pip-) Module, die in das aktuelle Modul importiert wurden:
Ergebnis:
Hinweis:
Dieser Code wurde aus Lösungen auf dieser Seite und aus Wie werden importierte Module aufgelistet?
quelle
Zusammenfassend:
(Es werden alle Bibliotheken zusammen mit Versionsdetails bereitgestellt).
Und:
(Es gibt vollständige Bibliotheksdetails).
quelle
Aufbauend auf Jakub Kukuls Antwort fand ich einen zuverlässigeren Weg, um dieses Problem zu lösen.
Das Hauptproblem dieses Ansatzes besteht darin, dass die Pakete "konventionell" installiert werden müssen (und dies schließt die Verwendung nicht ein
pip install --user
) oder sich bei der Python-Initialisierung im Systempfad befinden müssen.Um das zu umgehen, können Sie verwenden
pkg_resources.find_distributions(path_to_search)
. Dies sucht im Wesentlichen nach Distributionen, die importierbar wären, wenn siepath_to_search
sich im Systempfad befänden.Wir können diesen Generator folgendermaßen durchlaufen:
Dies gibt ein Wörterbuch mit Modulen als Schlüssel und deren Version als Wert zurück. Dieser Ansatz kann auf viel mehr als die Versionsnummer erweitert werden.
Vielen Dank an Jakub Kukul für den Hinweis in die richtige Richtung
quelle
Schreiben dieser Antwort für Windows-Benutzer. Wie in allen anderen Antworten vorgeschlagen, können Sie die Anweisungen wie folgt verwenden:
Es gibt jedoch einige Module, die ihre Version auch nach Verwendung der oben beschriebenen Methode nicht drucken. Sie können also einfach Folgendes tun:
quelle
Sie können dies versuchen:
Dadurch werden alle Pakete mit ihren Versionen ausgegeben. Ausgabe
quelle
Sie können zuerst ein solches Paket installieren und dann dessen Version überprüfen
es sollte Ihnen Paketversion geben
quelle