Чтобы сократить время разработки моего веб-приложения на Python, я пытаюсь использовать reload () для модулей, которые я недавно модифицировал. Функция reload () происходит через выделенную веб-страницу (часть версии для разработки веб-приложения), в которой перечислены модули, которые были недавно изменены (и измененная временная метка py-файла более поздняя, чем соответствующий pyc-файл). Полный список модулей получен из sys.modules (и я фильтрую список, чтобы сосредоточиться только на тех модулях, которые являются частью моего пакета).
Перезагрузка отдельных файлов Python в некоторых случаях работает, а в других - нет. Я предполагаю, что все модули, которые зависят от модифицированного модуля, должны быть перезагружены, и перезагрузка должна происходить в правильном порядке.
Я ищу способ получения списка модулей, импортированных конкретным модулем. Есть ли способ сделать такой самоанализ в Python?
Я понимаю, что мой подход не может быть гарантирован на 100%, и самый безопасный способ - перезагрузить все, но если бы быстрый подход работал в большинстве случаев, он был бы достаточно хорош для целей разработки.
Ответ на комментарии относительно автозагрузчика DJango
@ Гленн Мейнард, Спасибо, я читал об автозагрузчике DJango. Мое веб-приложение основано на Zope 3 и с количеством пакетов и большим количеством инициализаций на основе ZCML, полный перезапуск занимает от 10 до 30 секунд или более, если размер базы данных больше. Я пытаюсь сократить количество времени, затрачиваемого на перезагрузку. Когда я чувствую, что внес много изменений, я обычно предпочитаю делать полный перезапуск, но чаще я меняю несколько строк здесь и там, на которые я не хочу тратить так много времени. Настройка разработки полностью независима от настройки производства, и, как правило, если при перезагрузке происходит что-то не так, это становится очевидным, поскольку на страницах приложения появляется нелогичная информация или создаются исключения. Я очень заинтересован в изучении того, будет ли выборочная перезагрузка работать или нет.