我有这样的树:
package/
subpackage1/
__init__.py
impl/
__init__.py
moduleA.py
moduleA_test.py
subpackage2/
__init__.py
impl/
__init__.py
moduleB.py
在moduleA.py
我有这段代码:
from subpackage2.impl.moduleB import func_abc
模块moduleA_test.py
只需导入moduleA
并测试其功能。
在终端中,如果我在文件夹package
中并运行python
然后from subpackage1.impl import moduleA
,则可以正常运行。
但如果我运行python submodule1/impl/moduleA_test.py
(仍然在package
文件夹中),代码会在我上面写的导入行上引发错误。我得到ImportError: No module named subpackage2.impl.moduleB
。
我也试过python -m submodule1.impl.moduleA_test.py
,但没有运气。
答案 0 :(得分:0)
当您编写from subpackage2.impl.moduleB import func_abc
时,它会搜索与您的代码相同的目录中的subpackage2文件夹,即package.subpackage1.impl。
因此,当您编写import语句时,它会搜索不存在的package.subpackage1.impl.subpackage2.impl.moduleB,因此会出错。