的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()
有效?
答
只需将其重命名:
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语句的顺序并不重要。
有什么特别的原因,你需要为你的代码b.c.foo()语法,而不是c.foo()? – Amber 2009-08-04 02:37:41
是的,前缀很长,有很多嵌套模块,但导入'c'是名称空间冲突。 – 2009-08-04 02:40:52
好吧,除此之外,假设写c.foo()的语义更准确,以至于我们不能避免这个问题。 – 2009-08-04 03:02:00