【发布时间】:2021-10-20 14:59:45
【问题描述】:
我想将 .py-Files(插件)动态加载到我的程序中。
在做了一些研究之后,我发现通常有两种方法:
1)
import importlib.util
spec = importlib.util.spec_from_file_location("module.name", "/path/to/file.py")
foo = importlib.util.module_from_spec(spec)
spec.loader.exec_module(foo)
from importlib import import_module
module = import_module("plugins." + modulename)
for name, klass in inspect.getmembers(module, inspect.isclass):
if klass.__module__ == "plugins." + modulename:
instance = klass()
if isinstance(instance, IPluginTemplate):
print("Plugin Call:", instance.do_something(x))
这两种解决方案的主要区别是什么?有没有首选的方法?
【问题讨论】: