我正准备打包我的python代码。我的包结构是:
mypackage/
__init__.py
/subpackage
__init__.py
module1.py
module2.py
在我的模块2中,如果我使用绝对导入,如:
from mypackage.subpackage import module1
这会奏效的。
然而,如果我使用显式导入,如:
from . import module1
这给了我
ImportError:尝试相对导入,但没有已知的父包
我在谷歌上搜索了一下,发现隐式相对导入不好。但我的导入是明确的,它给了我这样一个错误消息。有人能帮我理解为什么吗?感谢
相对导入只能在包内部工作。如果您将mypackage
作为实际可执行代码(纯库(的需求,并使用显式的相对导入,那么就可以了。但是,如果您尝试直接运行module2
,您的代码会显示
查找
__main__
所在的包,查找其父包,并查找名为module1
的its子包
这显然是无稽之谈,因为__main__
没有父级(根据定义(