我有一個結構的一部分,這樣工作的:的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()
有效?
我有一個結構的一部分,這樣工作的:的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