关于python:当模块名在变量中时导入模块

importing a module when the module name is in a variable

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

Possible Duplicate:
Dynamic module import in Python

我正在编写一个小脚本,该脚本从目录中获取文件名,并将其传递给另一个模块,该模块随后导入该文件。

所以流动就像1)获取模块名(存储在变量中)2)将此变量名传递给模块3)导入名称存储在变量名中的模块

我的代码就像

1
2
3
4
5
data_files = [x[2] for x in os.walk(os.path.dirname(sys.argv[0]))]
hello = data_files[0]
modulename = hello[0].split(".")[0]

import modulename

问题是,当它到达import语句时,它将module name读取为一个实模块名,而不是该变量中存储的值。我不确定这在python中是如何工作的,任何解决这个问题的帮助都是很好的。


您需要内置的__import__功能

1
new_module = __import__(modulename)


importlib可能是解决问题的方法。文件在这里。在大多数情况下,它通常比__import__更受欢迎。

在您的情况下,您将使用:

1
2
import importlib
module = importlib.import_module(module_name, package=None)