Comment pouvez-vous obtenir par programme la liste des dépendances d'un package Python?
La norme les setup.py
a documentés, mais je ne trouve pas de moyen facile d'y accéder partir de Python ou de la ligne de commande.
Idéalement, je recherche quelque chose comme:
$ pip install somepackage --only-list-deps
kombu>=3.0.8
billiard>=3.3.0.13
boto>=2.26
ou:
>>> import package_deps
>>> package = package_deps.find('somepackage')
>>> print package.dependencies
['kombu>=3.0.8', 'billiard>=3.3.0.13', 'boto>=2.26']
Remarque, je ne parle pas d'importer un package et de trouver tous les modules référencés. Bien que cela puisse trouver la plupart des packages dépendants, il ne pourrait pas trouver le numéro de version minimum requis. Cela n'est stocké que dans le fichier setup.py.
Réponses:
En plus de la
pip show [package name]
commande, il y apipdeptree
.Fais juste
puis courir
et il vous montrera vos dépendances sous forme d'arbre, par exemple,
Le projet se trouve sur https://github.com/naiquevin/pipdeptree , où vous trouverez également des informations d'utilisation.
la source
pipdeptree
afficher les dépendances de tous les packages installés , pas seulement ceux d'un package donné. Bien que vous puissiez filtrer sa--json
sortie, cela dépend toujours des packages déjà installés.requirements.txt
:)-p
option pour sélectionner uniquement quelques packages dont vous souhaitez explorer les dépendances.pipdeptree
était super utile lors de l'optimisationrequirements.txt
.$ pipdeptree | grep -P '^\w+'
Cela génère uniquement des packages de niveau supérieur. Plus d'informations iciEssayez d'utiliser la
show
commande danspip
, par exemple:Mettre à jour (récupérer les déps avec la version spécifiée):
la source
Requires
section$ pip3 show beautifulsoup4
Montre en quelque sorte videRequires:
pour moi - beautifulsoup4 ne dépend-il de rien?beautifulsoup4
.Quelques réponses ici montrent que pip est importé pour être utilisé dans des programmes. La documentation de pip déconseille fortement cette utilisation de pip .
Au lieu d'accéder
pkg_resources
via l'importation pip, vous pouvez en fait simplement importerpkg_resources
directement et utiliser la même logique (qui est en fait l'une des solutions suggérées dans les documents pip liés pour quiconque souhaite voir les méta-informations du package par programme).Si vous avez du mal à trouver exactement le nom de votre package, l'
WorkingSet
instance est renvoyée par despkg_resources.working_set
outils__iter__
afin que vous puissiez tous les imprimer et, espérons-le, repérer le vôtre là-dedans :)c'est à dire
Cela fonctionne avec python 2 et 3 (bien que vous deviez ajuster les instructions d'impression pour python2)
la source
(CECI EST UNE RÉPONSE D'HÉRITAGE ET DOIT ÊTRE ÉVITÉ POUR LES VERSIONS MODERNES PIP ET GAUCHE ICI POUR RÉFÉRENCE AUX ANCIENNES VERSIONS PIP) La réponse d'Alex est bonne (+1). En python:
devrait retourner quelque chose comme
où twisted est le nom du package, que vous pouvez trouver dans le dictionnaire:
pour les lister tous:
devrait vous donner des listes comme celle-ci:
la source
_vendor
attribut ne semble pas exister dans la version pip19.1.1
(Edit: Très bien, il semble avoir été déplacé vers lepkg_resources
package dans la dernière version de python!)pip show
partie est bonne, pas le reste). Utilisezpip show
, pipdeptree ou consultez la réponse de Jordan Mackie en utilisant directement setuptools 'pkg_resources
.Utilisez https://libraries.io/ . C'est un bon endroit pour explorer les dépendances avant d'installer à l'aide de pip.
Par exemple. Tapez google-cloud-storage et recherchez, puis vous pouvez trouver la page de la bibliothèque ( https://libraries.io/rubygems/google-cloud-storage ). Sélectionnez la version pour laquelle vous souhaitez explorer les dépendances dans les «versions» (la valeur par défaut est la dernière), sous «Dépendances», vous pouvez trouver la liste des dépendances et leurs versions prises en charge.
la source
Essayez ceci selon cet article en python:
Cela montrera comme:
la source