的Python:如何导入命名空间

问题描述:

我有一个结构的一部分,这样工作的:的Python:如何导入命名空间

import a.b.c 
a.b.c.foo() 

,这也适用:

from a.b import c 
c.foo() 

但这不起作用:

from a import b.c 
b.c.foo() 

也没有:

from a import b 
b.c.foo() 

如何进行导入以便b.c.foo()有效?

+0

有什么特别的原因,你需要为你的代码b.c.foo()语法,而不是c.foo()? – Amber 2009-08-04 02:37:41

+0

是的,前缀很长,有很多嵌套模块,但导入'c'是名称空间冲突。 – 2009-08-04 02:40:52

+0

好吧,除此之外,假设写c.foo()的语义更准确,以至于我们不能避免这个问题。 – 2009-08-04 03:02:00

只需将其重命名:


from a.b import c as BAR 

BAR.foo() 

在您的'b'包中,您需要添加'import c',以便它始终可以作为b的一部分访问。

from a import b 
from a.b import c 
b.c = c 

import a.b.c 
from a import b 
b.c.foo() 

import语句的顺序并不重要。