¿Cómo se puede obtener mediante programación la lista de dependencias de un paquete de Python?
El estándar los setup.pytiene documentados, pero no puedo encontrar una manera fácil de acceder a ellos desde Python o la línea de comandos.
Idealmente, estoy buscando algo como:
$ pip install somepackage --only-list-deps
kombu>=3.0.8
billiard>=3.3.0.13
boto>=2.26o:
>>> import package_deps
>>> package = package_deps.find('somepackage')
>>> print package.dependencies
['kombu>=3.0.8', 'billiard>=3.3.0.13', 'boto>=2.26']Tenga en cuenta que no estoy hablando de importar un paquete y encontrar todos los módulos referenciados. Si bien esto podría encontrar la mayoría de los paquetes dependientes, no podría encontrar el número de versión mínimo requerido. Eso solo se almacena en setup.py.

Respuestas:
Además del
pip show [package name]comando, existepipdeptree.Solo haz
entonces corre
y le mostrará sus dependencias en forma de árbol, por ejemplo,
El proyecto se encuentra en https://github.com/naiquevin/pipdeptree , donde también encontrará información de uso.
fuente
pipdeptreemuestra las dependencias de todos los paquetes instalados , no solo las de un paquete determinado. Si bien puede filtrar su--jsonsalida, aún depende de los paquetes que ya estén instalados.requirements.txt-popción para seleccionar solo unos pocos paquetes cuyas dependencias desea explorar.pipdeptreefue muy útil al optimizarrequirements.txt.$ pipdeptree | grep -P '^\w+'Esto genera solo paquetes de nivel superior. Más información aquíIntente usar el
showcomando enpip, por ejemplo:Actualizar (recuperar deps con la versión especificada):
fuente
Requiressección$ pip3 show beautifulsoup4muestra vacíoRequires:para mí, ¿no depende beautifulsoup4 de nada?beautifulsoup4.Algunas respuestas aquí muestran que pip se está importando para su uso en programas. La documentación de pip desaconseja fuertemente este uso de pip .
En lugar de acceder a
pkg_resourcestravés de la importación de pip, en realidad puede importarpkg_resourcesdirectamente y usar la misma lógica (que en realidad es una de las soluciones sugeridas en los documentos de pip vinculados para cualquiera que desee ver la metainformación del paquete mediante programación).Si tiene problemas para averiguar exactamente cuál es el nombre de su paquete, la
WorkingSetinstancia devuelta por lospkg_resources.working_setimplementos__iter__para que pueda imprimirlos todos y, con suerte, encontrar el suyo allí :)es decir
Esto funciona con python 2 y 3 (aunque deberá ajustar las declaraciones de impresión para python2)
fuente
(ESTA ES UNA RESPUESTA LEGADA Y DEBE EVITARSE PARA LAS VERSIONES DE PIP MODERNAS Y DEJARLA AQUÍ PARA REFERENCIA A VERSIONES DE PIP ANTERIORES) La respuesta de Alex es buena (+1). En Python:
debería devolver algo como
donde twisted es el nombre del paquete, que puede encontrar en el diccionario:
para enumerarlos todos:
debería darte listas como esta:
fuente
_vendoratributo no parece existir en la versión pip19.1.1(Edición: ¡Muy bien, parece que se ha movido alpkg_resourcespaquete en la última versión de Python!)pip showparte es buena, no el resto). De cualquier usopip show, pipdeptree o ver la respuesta de Jordan Mackie usando setuptools 'pkg_resourcesdirectamente.Utilice https://libraries.io/ . Es un buen lugar para explorar las dependencias antes de instalar usando pip.
P.ej. Escriba google-cloud-storage y busque, luego podrá encontrar la página de la biblioteca ( https://libraries.io/rubygems/google-cloud-storage ). Seleccione la versión para la que desea explorar las dependencias de las 'Versiones' (la predeterminada es la más reciente). En 'Dependencias' puede encontrar la lista de dependencias y sus versiones compatibles.
fuente
Prueba esto de acuerdo con este artículo en Python:
Se mostrará como:
fuente