我正在尝试动态加载我创建的模块。
现在这可以正常工作:
import structures.index
但是如果我通过动态导入来尝试同样的事情,它就会失败。
struct = __import__("structures.index")
提供的错误是:
Error ('No module named structures.index',)
任何想法为什么?
编辑:使用完整范围时(它有点工作?):
struct = __import__("neoform.structures.index")
这不会引发任何错误,但是,它没有加载索引模块,而是加载了“neoform”模块。
“结构”的结果是:
<module 'neoform' from '/neoform/__init__.py'>
另外,作为一个附带问题,我怎样才能在动态加载的模块中实例化一个类?(假设所有模块都包含一个公共类名)。
编辑:解决方案:(感谢 coonj 和 Rick)这最终是有效的。不知道为什么(还),但fromlist
必须是“显然是任何东西,因为当我将字母“a”作为值时它起作用(奇怪,因为文件中只有 1 个类)。
def get_struct_module(self, name):
try:
return = __import__("neoform.structures." + name, fromlist='*')
except ImportError, e:
self.out.add("Could not load struct: neoform.structure." + name + "\n\n" + "Error " + str(e.args))