2009-08-04 130 views
3

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

回答

9

只需將其重命名:


from a.b import c as BAR 

BAR.foo() 
2

在您的'b'包中,您需要添加'import c',以便它始終可以作爲b的一部分訪問。

2
from a import b 
from a.b import c 
b.c = c 
0
import a.b.c 
from a import b 
b.c.foo() 

import語句的順序並不重要。