我有一个目录结构:
/somedir
/x
A.py
B.py
/anotherdir
/y
C.py
B
导入A
。当我从B.py
运行somedir/x/
时,此功能正常。但是,当我尝试导入C.py
然后运行
B.py
中
$> python C.py
抱怨找不到A
。我可以将somedir/x/
添加到python路径中,这样当我运行C.py
时,它可以找到B
和A
。但是,我担心在我使用的另一个目录(diffdir/z/A
)中是否会有另一个A可能与包含somedir/x/A
的pythonpath冲突。
答案 0 :(得分:0)
我猜你得到的基本问题是因为Python 2.x和Python 3.x之间的intra-package references
发生了变化。来自documentation -
<强> 6.4.2。包内参考
当包被组织成子包时(与示例中的声音包一样),您可以使用绝对导入来引用兄弟包的子模块。例如,如果模块
sound.filters.vocoder
需要使用sound.effects
包中的echo模块,则可以使用sound.effects import echo
。
基本上,如果要导入B
和B
导入兄弟,则在Python 3.x中,您需要使用绝对路径导入A
中的B
。根据您的说法,您要导入B
作为 -
import somedir.x.B
然后在B
中,您需要导入A
作为 -
import somedir.x.A
或者您也可以尝试 -
from . import A