Python __import__只给我顶级模块

时间:2013-12-17 23:58:56

标签: python import

我在做

module = __import__("client.elements.gui.button", globals(), locals(), [], 0)

但它只返回client

我的问题是什么?

3 个答案:

答案 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