ใช้ importlib.import_module() นำเข้าโมดูลจากชื่อเป็น String ระหว่าง Runtime
Import โมดูลเดี่ยว
>>> from importlib import import_module
>>> module_name = "os"
>>> globals()[module_name] = import_module(module_name)
>>> os.getcwd() # ใช้ได้เลย
Import หลายโมดูลจาก List
>>> import importlib
>>> modnames = ["os", "sys", "math"]
>>> for lib in modnames:
... globals()[lib] = importlib.import_module(lib)
Import Submodule ของ Package
>>> import importlib
>>> pack = 'datetime'
>>> mod = 'date'
>>> globals()[pack] = importlib.import_module(pack)
>>> globals()[pack + '.' + mod] = importlib.import_module(pack + '.' + mod)
>>> datetime.date.today()
กรณีใช้จริง: Plugin System
def load_plugins(plugin_names):
plugins = {}
for name in plugin_names:
try:
plugins[name] = importlib.import_module(f'myapp.plugins.{name}')
except ImportError:
log.warning(f"Plugin {name} not found")
return plugins
ใช้ importlib.import_module() นำเข้าโมดูลจากชื่อ String ระหว่างรันโปรแกรม รองรับ Submodule และ Plugin System