我正在尝试从目录运行模块。我的项目树的简化版本是:
main.py
modules/
|_ a/
| |_ a.py
| |_ __init__.py
|_ b/
| |_ b.py
| |_ __init__.py
|_ __init__.py
modules/
中的每个模块都有一个空的__init__.py
和一个run()
方法,可以在<module-name>.py
中执行某些操作
从main.py
我想加载所有模块,然后通过将其名称作为参数传递给函数来运行模块。例如,我想从main.py
:
def runModule(module_name):
# pseudo-codish
from modules import "module_name"
"module_name.run()"
runModule(a)
我用谷歌搜索了一下,但似乎无法找到一种方法。这甚至可能吗?我正在使用Python3,但欢迎使用Python2解决方案进行指导。
答案 0 :(得分:4)
您可以使用importlib
执行此操作。
def run_module(module_name):
mod = importlib.import_module(module_name)
mod.run()