Когда я разрабатываю код 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, которую я описываю здесь, но есть ли простой способ взломать такую вещь вместе?