问题描述
我正盯着我的python代码打包。 我的包裹结构是:
mypackage/
__init__.py
/subpackage
__init__.py
module1.py
module2.py
在我的module2中,如果我使用绝对导入,例如:
from mypackage.subpackage import module1
这将起作用。
但是,如果我使用显式导入,如:
from . import module1
这给了我
ImportError:尝试了相对导入,但没有已知的父包
我对此进行了搜索,发现隐式相对导入效果不好。但是我的导入是显式的,它给了我这样的错误信息。 有人可以帮我理解为什么吗? 谢谢
解决方法
相对导入仅在包内部有效。如果您对实际的可执行代码(纯库)有mypackage
的要求,并且使用了显式的相对导入,那就可以了。但是,如果您尝试直接运行module2
,则代码会显示
找到
__main__
所在的程序包,找到其父级,并找到名为module1
的ITS子级
这显然是胡说八道,因为__main__
没有父(根据定义)