如何从字符串命名模块加载函数?

时间:2016-03-19 00:42:54

标签: python python-2.7

我有结构:

modules
    __init__.py
    version_1.py
    version_2.py
settings.py
my_script.py
__init__.py

在文件版本_1和版本_2中,我有两个版本相同的功能:

def ext_function(*args, **kwargs):
    # something

我想在文件settings.py中定义已加载的版本:

EXT_MODULE = 'modules.version_1'

并在my_script中执行函数,如下所示:

settings.EXT_MODULE.ext_function(args)

怎么做? EXT_MODULE是一个字符串,所以我不能执行这样的函数。

1 个答案:

答案 0 :(得分:1)

您可以使用importlib模块:

import importlib

module = importlib.import_module(settings.EXT_MODULE)
module.ext_function(args)