我想知道是否有人可以解釋這一點。我們有多個具有相同根包的軟件包庫,例如a
。我也有包a.b
位於X和包裝a.c
位於Y. X和Y二者都在我的PYTHONPATH
當我做:python導入具有相同根包裝名稱和不同位置的不同子包裝
import a.c
import a.b
我得到一個錯誤:"No module named b"
。在閱讀後,在我看來,一旦a.c
被加載python寫信息a
以及當我來做a.b
,因爲它已經有關於a
的信息已經從來沒有麻煩看到位置X爲a.b
並拋出一個錯誤,沒有可以找到名爲b
的模塊。
此外,我發現在PYTHONPATH
中指定X和Y的順序似乎會影響導入。例如,當我做
PYTHONPATH=$PYTHONPATH:X:Y python
>>> import a.b # works
>>> import a.c # fails
但如果我這樣做
PYTHONPATH=$PYTHONPATH:Y:X python
>>> import a.b # fails
>>> import a.c # works
那是正確的,如果是這樣,我怎麼能解決此問題?有一個通用的模塊根名稱和不同的子軟件包駐留在不同的項目等是很方便的。當然,我從Java的角度來看,你可以做這種重疊。
這種情況無論是在Python 2和3 – Alex 2014-09-29 08:27:31