python 顶层模块理解 ValueError: attempted relative import beyond top-level package

package_0
├── module_0.py
├── module_1.py
├── package_1
│   ├── __init__.py
│   ├── module_2.py
│   ├── module_3.py
│   └── package_2
│       ├── __init__.py
│       ├── module_21.py
│       └── module_22.py
└── package_3
    ├── __init__.py
    └── module_4.py

在 module_2 中导入 module_4:from …package_3 import module_4
会报错:

ValueError: attempted relative import beyond top-level package

由于在“顶层模块”之外引用包,这里用到“顶层模块”的概念
“顶层模块”是这执行文件同级的文件,如:

如果将 module_0.py 当作执行模块,则和该模块同级的 package_1 和 package_3 就是顶级包(top-level package),而 module_2 在package_1中,module_0、module_1和module_4都在 package_1之外,所以调用这三个模块时,就会报这个错误。

学习来自:https://zhuanlan.zhihu.com/p/69099185

你可能感兴趣的:(Python,python)