যদিও প্রদত্ত উত্তরগুলি একটি নির্দিষ্ট মডিউলটির জন্য কাজ করে তবে তারা সাবমোডিয়ুলগুলি পুনরায় লোড করবে না, এই উত্তরে উল্লেখ করা হয়েছে :
যদি কোনও মডিউল ব্যবহার করে অন্য মডিউল থেকে অবজেক্টগুলি আমদানি করে from ... import ...
, অন্য মডিউলের reload()
জন্য কল করা এটি থেকে আমদানিকৃত বস্তুগুলিকে নতুন করে সংজ্ঞায়িত না করে - এর চারপাশের এক উপায় হ'ল স্টেটমেন্ট থেকে পুনরায় সম্পাদন করা, অন্যটি হ'ল পরিবর্তিত import
যোগ্য নাম ( module.*name*
) ব্যবহার করা।
তবে, যদি __all__
পাবলিক এপিআই সংজ্ঞায়িত করতে ভেরিয়েবল ব্যবহার করা হয় তবে সমস্ত প্রকাশ্যে উপলভ্য মডিউলগুলি স্বয়ংক্রিয়ভাবে পুনরায় লোড করা সম্ভব:
# 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)
পূর্বের উত্তরে উল্লিখিত গুহাতগুলি এখনও বৈধ। উল্লেখযোগ্যভাবে, __all__
ভ্যারিয়েবল দ্বারা বর্ণিত হিসাবে একটি সাবমডিউল যা সর্বজনীন API এর অংশ নয় এটি পরিবর্তন করে এই ফাংশনটি ব্যবহার করে পুনরায় লোড দ্বারা প্রভাবিত হবে না। একইভাবে, সাবমডিউলের একটি উপাদান অপসারণ পুনরায় লোড দ্বারা প্রতিফলিত হবে না।