我想知道是否有人可以解释这一点。我们有多个具有相同根包的软件包库,例如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