【发布时间】:2014-11-21 10:19:56
【问题描述】:
我想知道是否有人可以阐明这一点。我们有多个具有相同根包的包库,例如a。我还有包a.b 位于X 和包a.c 位于Y。X 和Y 都在我的PYTHONPATH 中,当我这样做时:
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 中
标签: python