module = __import__("client.elements.gui.button", globals(), locals(), [], 0)
但它只是返回client
。
我的问题是什么?
module = __import__("client.elements.gui.button", globals(), locals(), [], 0)
但它只是返回client
。
我的问题是什么?
接受的答案是正确的,但如果你在文档阅读,你会发现,这可能与周围被得到公认的一个令人不安的“黑客”利用__import__
像这样:
module = __import__('client.elements.gui.button', fromlist=[''])
一点也没有” t真的很重要,只要它是非空列表,你通过fromlist
。这表示您想要执行from x.y.z import foo
样式导入的默认__import__
实现,并且将返回您之后的模块。
如上所述,您应该使用importlib
来代替,但如果您需要支持Python版本< 2.7,这仍然是一种解决方法。
真的很有意思,很好的补充答案。 – Drake
只获得顶级水平,但你也可以解决此像这样:
module_name = 'some.module.import.class'
module = __import__(module_name)
for n in module_name.split('.')[1:]:
module = getattr(module, n)
# module is now equal to what would normally
# have been retrieved where you to properly import the file
对于Python 2.7或更高版本,可以使用['importlib.import_module()'](HTTP://文档。 python.org/2/library/importlib.html#importlib.import_module)。 –