Ich habe die Python-Module construct
und statlib
mit setuptools
installiert:
sudo apt-get install python-setuptools
sudo easy_install statlib
sudo easy_install construct
Wie kann ich ihre Versionen über die Befehlszeile überprüfen?
Ich habe die Python-Module construct
und statlib
mit setuptools
installiert:
sudo apt-get install python-setuptools
sudo easy_install statlib
sudo easy_install construct
Wie kann ich ihre Versionen über die Befehlszeile überprüfen?
Und falls Ihr Produktionssystem so gehärtet ist, dass es weder pip
noch conda
hat, hier ist ein Bash-Ersatz für pip freeze
:
ls /usr/local/lib/python3.8/dist-packages | grep info | awk -F "-" '{print $1"=="$2}' | sed 's/.dist//g'
(Stellen Sie sicher, dass Sie Ihren dist-packages
-Ordner auf Ihre aktuelle Python-Version aktualisieren und inkonsistente Namen ignorieren, z.B. Unterstriche vs. Bindestriche).
Beispielhafter Ausdruck:
Flask==1.1.2
Flask_Caching==1.10.1
gunicorn==20.1.0
[..]
Hier ist ein kleines Bash-Programm, um die Version eines beliebigen Pakets in Ihrer Python-Umgebung zu erhalten. Kopieren Sie dies einfach in Ihr /usr/bin
und geben Sie ihm ausführbare Berechtigungen:
#!/bin/bash
packageName=$1
python -c "import ${packageName} as package; print(package.__version__)"
Dann können Sie es einfach im Terminal ausführen, vorausgesetzt, Sie haben das Skript py-check-version
genannt:
py-check-version whatever_package
Um eine Liste der nicht standardmäßigen (pip) Module zu erhalten, die im aktuellen Modul importiert wurden:
[{pkg.key : pkg.version} for pkg in pip.get_installed_distributions()
if pkg.key in set(sys.modules) & set(globals())]
Ergebnis:
>>> import sys, pip, nltk, bs4
>>> [{pkg.key : pkg.version} for pkg in pip.get_installed_distributions() if pkg.key in set(sys.modules) & set(globals())]
[{'pip': '9.0.1'}, {'nltk': '3.2.1'}, {'bs4': '0.0.1'}]
Hinweis:
Dieser Code wurde aus Lösungen sowohl auf dieser Seite als auch von How to list imported modules? zusammengestellt.
Basierend auf Jakub Kukuls Antwort habe ich einen zuverlässigeren Weg gefunden, dieses Problem zu lösen.
Das Hauptproblem dieses Ansatzes ist, dass die Pakete "konventionell" installiert sein müssen (was nicht pip install --user
einschließt) oder sich im System-PATH bei der Python-Initialisierung befinden müssen.
Um dies zu umgehen, können Sie pkg_resources.find_distributions(path_to_search)
verwenden. Dies sucht im Grunde nach Distributionen, die importierbar wären, wenn path_to_search
im System-PATH wäre.
Wir können durch diesen Generator wie folgt iterieren:
avail_modules = {}
distros = pkg_resources.find_distributions(path_to_search)
for d in distros:
avail_modules[d.key] = d.version
Dies liefert ein Wörterbuch mit Modulen als Schlüssel und ihrer Version als Wert zurück. Dieser Ansatz kann auf viel mehr als nur die Versionsnummer ausgedehnt werden.
Danke an Jakub Kukul für den Hinweis in die richtige Richtung.
Sie können einfach subprocess.getoutput(python3 --version)
verwenden:
import subprocess as sp
print(sp.getoutput(python3 --version))
# Oder wie es Ihnen am besten passt!
py3_version = sp.getoutput(python3 --version)
def check_version(name, version):...
check_version('python3', py3_version)
Für weitere Informationen und Möglichkeiten, dies ohne Abhängigkeit von Attribut __version__
zu tun:
Sie können auch subprocess.check_output()
verwenden, das einen Fehler auslöst, wenn der Unterprozess etwas anderes als den Exit-Code 0 zurückgibt:
_[subprocess — Unterprozess-Verwaltung](https://docs.python.org/3/library/subprocess.html#check_output())_
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.