python,导入具有动态名称的文件

python, importing a file with a dynamic name

本问题已经有最佳答案,请猛点这里访问。

伙计们,我想动态导入python文件和函数。模块名应该传递给这样的函数:

1
2
3
4
def scrape(url, foo):
    modulename = url['modulename']
    import modulename
    modulename.modulename(url, foo)

这是错误的:

1
ImportError: No module named modulename

那么,我们如何让python使用"modulename"作为变量呢?

谢谢!


您可以使用importlib.import_module():

1
2
3
4
def scrape(url, foo):
    import importlib
    modulename = importlib.import_module(url["modulename"])
    modulename.modulename(url, foo)


您也可以使用

1
module = __import__('module_name')

例子:

1
2
3
module = __import__('math')
print module.sqrt(4)
>> 2

或者,如果您也想使用动态方法名称

1
2
3
4
module = __import__('math')
method =  getattr(module, 'sqrt')
method(4)
>> 2