Когда я разрабатываю код Python, я обычно тестирую его в специальном режиме в интерпретаторе. Я буду import some_module
, протестировать его, найти ошибку, исправить ошибку и сохранить, а затем использовать встроенную функцию reload
для reload(some_module)
и снова протестировать.
Однако предположим, что в some_module
у меня есть import some_other_module
, и при тестировании some_module
я обнаруживаю ошибку в some_other_module
и исправляю ее. Теперь вызов reload(some_module)
не будет рекурсивно повторно импортировать some_other_module
. Мне нужно либо вручную, либо reimport зависимость (делая что-то вроде reload(some_module.some_other_module)
или import some_other_module; reload(some_other_module)
), или, если я изменил целую кучу зависимостей и потерял информацию о том, что мне нужно перезагрузить, мне нужно перезапустить весь интерпретатор.
Что было бы более удобно, если бы была какая-то функция recursive_reload
, и я мог просто сделать recursive_reload(some_module)
и Python не только перезагрузить some_module
, но и рекурсивно перезагрузить каждый модуль, который some_module
импортирует (и каждый модуль, который импортирует каждый из этих модулей и т.д.), чтобы я мог быть уверен, что не использовал старую версию любого из других модулей, от которых зависит some_module
.
Я не думаю, что в Python есть что-то, что ведет себя как функция recursive_reload
, которую я описываю здесь, но есть ли простой способ взломать такую вещь вместе?