python - modulos - requirements.txt django
¿Lista de dependencias de paquetes de Python sin cargarlas? (3)
Digamos que el paquete A de python requiere B, C y D; ¿hay una manera de enumerar A → BCD sin cargarlos?
Requires
en los metadatos ( yolk -MA
) a menudo están incompletos, grr.
Uno puede descargar A.tar / A.egg, luego mirar a través de A / setup.py, pero algunos de ellos son bastante sangrientos.
(Pensé que al menos las dependencias de primer nivel podrían ser mecanizadas; incluso una solución al 98% sería mejor que las descargas de avalanchas).
Una pregunta relacionada: pip-upgrade-package-without-upgrading-dependencies
Si por paquete te refieres a un paquete instalado de pip (y no un directorio con un __init__.py), entonces puedes usar el paquete de Python llamado pip. Por ejemplo:
def get_all_package_dependencies():
"""Return dictionary of installed packages to list of package dependencies."""
return {
dist.key: [r.key for r in dist.requires()]
for dist in pip.get_installed_distributions()
}
modulefinder desde el lib estándar
Nuevo en la versión 2.3.
Este módulo proporciona una clase de ModuleFinder que se puede usar para determinar el conjunto de módulos importados por un script. modulefinder.py también puede ejecutarse como un script, dando como nombre de archivo el script de Python, después de lo cual se imprimirá un informe de los módulos importados.
No estoy seguro de si cumple con su requisito de no cargar los módulos. Desde aqui
el modulefinder usa la inspección de bytecode para encontrar dependencias, y por lo tanto está libre de cualquier efecto secundario que pueda ser causado por la importación de los módulos que se están estudiando.
Otros consejos sobre el uso de pylint o Gui2exe here
sfood -fuq package.py | sfood-target-files
Enumeraremos las dependencias.
`-f` tells sfood to follow dependencies recursively
`-u` tells sfood to ignore unused imports
`-q` tells sfood to be quiet about debugging information
Para filtrar módulos de la biblioteca estándar, puede usar
sfood -fuq package.py | sfood-filter-stdlib | sfood-target-files
Como ya ha señalado, si hay otros directorios que le gustaría ignorar, también puede usar el sfood -I
.