当模块名称在变量中时运行模块

时间:2016-09-05 08:24:33

标签: python

我正在尝试从目录运行模块。我的项目树的简化版本是:

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解决方案进行指导。

1 个答案:

答案 0 :(得分:4)

您可以使用importlib执行此操作。

def run_module(module_name):
    mod = importlib.import_module(module_name)
    mod.run()