necesito una manera de encontrar las dependencias para cada uno de los sub-módulos de mi paquete de Python en tiempo de ejecución para que pueda inicializarlas en un orden adecuado (ver mi actual [EDIT:ex] solución here , que no funciona bien), así que al principio utilicé el módulo de Python , el buscador de módulos, pero era demasiado lento (~ 1-2 segundos por módulo).Python analizador de dependencias de bibliotecas
Mi siguiente opción fue analizar todas las variables globales de cada módulo, y encontrar de esas variables globales de qué submódulo depende cada submódulo. (Esta es mi solución actual EDITAR: Tengo una mejor solución ahora - ver mi respuesta). Este algoritmo es mucho más rápido que módulo buscador (toma < 200ms por módulo), pero solo funciona para las importaciones relativas, en lugar del estilo de importación totalmente calificado, que es inaceptable.
Por lo tanto, lo que necesito es o bien:
- Una alternativa más rápida a ModuleFinder
- Un algoritmo alternativo
NOTA: llamar a mi analizador de la dependencia en el inicio de cada módulo, así:
# File my_package/module3.py
import my_package.module1 # Some misc. module
import my_package.module2 # Some other misc. module
import my_package.dependency_analyzer
my_package.dependency_analyzer.gendeps()
(Sólo en caso de que le ayude alguna.)
¡Gracias!
EDIT: Tengo una solución ahora - ver mi respuesta.
¿Por qué tiene que pasar esto en tiempo de ejecución? ¿Estas dependencias cambian en el tiempo de ejecución? –
Normalmente (hay algunas excepciones), pero no quiero agregar un archivo de mapa de dependencia adicional para cada uno de mis módulos (que suena como lo que está sugiriendo), así que decidí analizar las dependencias de cada módulo en ejecución. hora. – DangerOnTheRanger
O podría implementar sus paquetes con alguna inicialización lenta, de modo que su orden de inicialización no importe. – rafalotufo