Meskipun jawaban yang diberikan berfungsi untuk modul tertentu, mereka tidak akan memuat ulang submodul, seperti yang tercantum dalam jawaban ini :
Jika modul mengimpor objek dari modul lain menggunakan from ... import ..., memanggil reload()modul lain tidak mendefinisikan ulang objek yang diimpor darinya - salah satu cara untuk menyelesaikan ini adalah mengeksekusi ulang dari pernyataan, yang lain adalah menggunakan importdan nama yang memenuhi syarat ( module.*name*) sebagai gantinya.
Namun, jika menggunakan __all__variabel untuk mendefinisikan API publik, dimungkinkan untuk memuat ulang semua modul yang tersedia secara publik:
# Python >= 3.5
import importlib
import types
def walk_reload(module: types.ModuleType) -> None:
if hasattr(module, "__all__"):
for submodule_name in module.__all__:
walk_reload(getattr(module, submodule_name))
importlib.reload(module)
walk_reload(my_module)
Peringatan yang tercantum dalam jawaban sebelumnya masih valid. Khususnya, memodifikasi submodule yang bukan bagian dari API publik seperti yang dijelaskan oleh __all__variabel tidak akan terpengaruh oleh reload menggunakan fungsi ini. Demikian pula, menghapus elemen submodule tidak akan tercermin dengan memuat ulang.