【发布时间】:2010-11-16 13:32:41
【问题描述】:
我有一个这样的结构:
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() 工作?
【问题讨论】:
-
您的代码需要 b.c.foo() 语法而不是 c.foo() 是否有特殊原因?
-
是的,前缀真的很长,有很多嵌套的模块,但是导入 'c' 是命名空间冲突。
-
好的,除此之外,假设编写 c.foo() 在语义上更正确,这样我们就无法绕过这个问题。
-
使用
from a.b import c as b_c和类似的重命名更容易解决命名空间冲突。
标签: python import namespaces