Мне нужен способ найти зависимости для каждого из подмодулей моего пакета Python во время выполнения, чтобы я мог инициализировать их в правильном порядке (см. Мой текущий [ РЕДАКТИРОВАТЬ: прежний ] решение здесь , что не очень хорошо работает, поэтому сначала я использовал стандартный модуль Python modulefinder , но это было слишком медленно (~ 1-2 секунды наmodule).
Моим следующим выбором было проанализировать все глобальные переменные каждого модуля и найти из этих глобальных переменных, от какого подмодуля зависит каждый подмодуль.(Это мое текущее решение РЕДАКТИРОВАТЬ: Теперь у меня есть лучшее решение - см. Мой ответ).Этот алгоритм намного быстрее, чем modulefinder (он требует <200 мс на модуль), но он работает только для относительного импорта, а не для полностью определенного стиля импорта, что недопустимо. </p>
Итак, мне нужно либо:
- Более быстрая альтернатива modulefinder
- Альтернативный алгоритм
ПРИМЕЧАНИЕ: Я вызываю свой анализатор зависимостей в начале каждого модуля, например:
# 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()
(на всякий случай, если вам это поможет.)
СпасибоВы!
РЕДАКТИРОВАТЬ: У меня есть решение сейчас - см. мой ответ.