Wie können Sie programmgesteuert die Abhängigkeitsliste eines Python-Pakets abrufen?
Der Standard setup.py
hat diese dokumentiert, aber ich kann nicht eine einfache Möglichkeit , den Zugriff auf sie finden von beiden Python oder die Befehlszeile.
Idealerweise suche ich etwas wie:
$ pip install somepackage --only-list-deps
kombu>=3.0.8
billiard>=3.3.0.13
boto>=2.26
oder:
>>> import package_deps
>>> package = package_deps.find('somepackage')
>>> print package.dependencies
['kombu>=3.0.8', 'billiard>=3.3.0.13', 'boto>=2.26']
Hinweis: Ich spreche nicht davon, ein Paket zu importieren und alle referenzierten Module zu finden. Während dies möglicherweise die meisten abhängigen Pakete findet, kann es nicht die erforderliche Mindestversionsnummer finden. Das ist nur in der setup.py gespeichert.
Antworten:
Neben dem
pip show [package name]
Befehl gibt espipdeptree
.Mach einfach
dann renne
und es zeigt Ihnen Ihre Abhängigkeiten in einer Baumform, z.
Das Projekt befindet sich unter https://github.com/naiquevin/pipdeptree , wo Sie auch Nutzungsinformationen finden.
quelle
pipdeptree
Zeigen Sie die Abhängigkeiten aller installierten Pakete an, nicht nur die eines bestimmten Pakets. Sie können zwar die--json
Ausgabe filtern , sie hängt jedoch von den bereits installierten Paketen ab.requirements.txt
-p
Option nur einige Pakete auswählen, deren Abhängigkeiten Sie untersuchen möchten.pipdeptree
war super hilfreich bei der Optimierungrequirements.txt
.$ pipdeptree | grep -P '^\w+'
Dies gibt nur Pakete der obersten Ebene aus. Weitere Infos hierVersuchen Sie, den
show
Befehl in zu verwendenpip
, zum Beispiel:Update (Deps mit der angegebenen Version abrufen):
quelle
Requires
Abschnitt$ pip3 show beautifulsoup4
ShowsRequires:
für mich leer - hängt beautifulsoup4 nicht von irgendetwas ab?beautifulsoup4
.Einige Antworten zeigen, dass Pip zur Verwendung in Programmen importiert wird. Die Dokumentation für pip rät dringend von dieser Verwendung von pip ab .
Anstatt
pkg_resources
über den Pip-Import zuzugreifen , können Sie einfachpkg_resources
direkt importieren und dieselbe Logik verwenden (dies ist tatsächlich eine der vorgeschlagenen Lösungen in den Pip-Dokumenten, die für alle verknüpft sind, die Paket-Metainformationen programmgesteuert anzeigen möchten).Wenn Sie Probleme haben, genau herauszufinden, wie Ihr Paketname lautet, wird die
WorkingSet
Instanz vonpkg_resources.working_set
Implementierungen zurückgegeben,__iter__
damit Sie alle drucken und hoffentlich Ihre finden können :)dh
Dies funktioniert sowohl mit Python 2 als auch mit Python 3 (obwohl Sie die print-Anweisungen für python2 anpassen müssen).
quelle
(Dies ist eine rechtliche Antwort und sollte für moderne PIP-Versionen vermieden und hier zur Bezugnahme auf ältere PIP-Versionen gelassen werden.) Alex 'Antwort ist gut (+1). In Python:
sollte so etwas zurückgeben
Dabei ist Twisted der Name des Pakets, den Sie im Wörterbuch finden:
um sie alle aufzulisten:
sollte Ihnen Listen wie diese geben:
quelle
_vendor
Attribut scheint in der Pip-Version nicht zu existieren19.1.1
(Bearbeiten: In Ordnung, es scheintpkg_resources
in der neuesten Python-Version zum Paket verschoben worden zu sein !)pip show
Teil ist gut, nicht der Rest). Entweder verwendenpip show
, pipdeptree oder sieht Jordan Mackie Antwort mit Setuptool 'pkg_resources
direkt.Verwenden Sie https://libraries.io/ . Es ist ein guter Ort, um Abhängigkeiten zu untersuchen, bevor Sie mit pip installieren.
Z.B. Geben Sie google-cloud-storage ein und suchen Sie. Anschließend finden Sie die Seite für die Bibliothek ( https://libraries.io/rubygems/google-cloud-storage ). Wählen Sie die Version aus, für die Sie die Abhängigkeiten untersuchen möchten, unter "Releases" (Standard ist die neueste Version). Unter "Abhängigkeiten" finden Sie die Abhängigkeitsliste und ihre unterstützten Versionen.
quelle
Versuchen Sie dies gemäß diesem Artikel in Python:
Es wird zeigen wie:
quelle