可能重复:
动态模块导入在Python
我希望尽早做出一套文件,在某些时候,并组织它的最好的办法是有一个列表,该列表将在文件的最顶端,之后它会的代码可笑量处理什么列表控件以及它如何运作。 我期待写说名单只有一次,并表示名单是这种格式的文件夹和文件名的列表:
[(folder/filename, bool, bool, int), (folder/filename, bool, bool, int)]
正如你可以看到, folder/filename
是相同的(在某种程度上)的。 文件名与文件夹名.py
就完了,但这样做你不需要做进口XXX.py进口XXX,所以我不认为这造成的问题。
我现在面临的问题是使用这种方法导入...
for (testName, auto, hardware, bit) in testList:
print(testName)
paths = "\\" + testName
print paths
addpath(paths)
sys.modules[testName] = testName # One of a few options I've seen suggested on the net
print("Path Added")
test = testName + ".Helloworld()"
eval(test)
因此,对于每个测试我有,打印的名字,组装其中包含路径(字符串"\\testName"
),在这个例子中,打印测试路径,然后将路径添加到列表( sys.path.append(path)
),然后打印确认它发生,然后组装中会以执行的字符串eval
为测试主模块,并最终EVAL它。
正如你所看到的,我目前有有在顶部进口的列表。 我不能简单地做进口testName
(内容testName
是我要导入的模块的名称),因为它会尝试找到一个名为模块testName
,而不是所谓的内容模块testName
。
我已经看到了这个地方已经做了几个例子,但找不到任何这在我的环境下工作。 如果有人可以从字面上扔的代码块它做它,这将是美妙的。
我还要求我不挂,画,也不是为驻扎使用eval,它在一个非常可控的环境(通过它的周期是.py文件中的列表中使用,因此没有“最终用户”应惹它)。