75

可能重复:
Python 中的动态模块导入

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

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

我的代码就像

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 语句时,它将 modulename 读取为真正的模块名称,而不是存储在此变量中的值。我不确定这在 python 中是如何工作的,解决这个问题的任何帮助都会很棒

4

2 回答 2

67

您想要内置__import__功能

new_module = __import__(modulename)
于 2012-11-28T04:55:47.557 回答
43

importlib 可能是要走的路。它的文档在这里__import__对于大多数用途,它通常是首选。

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

import importlib
module = importlib.import_module(module_name, package=None)
于 2012-11-28T04:58:40.173 回答