描述导入关系,只要不是入口文件就可以使用相对引用。
实例
D:.
│ list.txt
└─project
│ py1.py
└─sub_pak
│ py2.py
└─sub_sub_pak
└─py3.py
py1.py代码⬇
import sub_pak.sub_sub_pak.py3
py3.py代码⬇
#因为不是作为文件入口,所以此时可以使用相对引用的方式import
from .. import py2
print(py2.warning)
py2.py代码⬇
warning = "大爷来玩呀~"
另:终端中使用python -m命令时也是可以正常运行的,但是要注意递归导入的末端模块的层级,要在此模块的上一级才可以不报“ImportError: attempted relative import beyond top-level package”的错误
在我这个例子中就应该在py2.py的上一级使用命令⬇:
D:\project>python -m sub_pak.sub_sub_pak.py3
这样也可以正常运行,不会报错
参考资料:python包导入细节(attempted relative import beyond top-level package的原因解读)_岁月如歌-CSDN博客