我在做
module = __import__("client.elements.gui.button", globals(), locals(), [], 0)
但它只返回client
。
我的问题是什么?
答案 0 :(得分:6)
答案 1 :(得分:3)
接受的答案是正确的,但是如果您在文档中继续阅读,您会发现使用__import__
就可以解决这个令人不安的“黑客”:
module = __import__('client.elements.gui.button', fromlist=[''])
只要它是一个非空列表,你传递给fromlist
的内容并不重要。这向您要执行__import__
样式导入的默认from x.y.z import foo
实现发出信号, 将返回您所追求的模块。
如上所述,您应该使用importlib
,但如果您需要支持Python版本,那么这仍然是一种解决方法。 2.7。
答案 2 :(得分:2)
它只获得最高级别,但你也可以解决这个问题:
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