- 入口文件不能使用相对导入。
import .module1
if __name__ == '__main__':
print("hello")
ImportError: attempted relative import with no known parent package
- 相对导入不能超过顶层包。
app
|
|----module1
| |---f1.py
|
|----module2
| |---f2.py
|
|----main.py
# f2.py
import ..module1.f1
$ python main.py
ValueError: attempted relative import beyond top-level package
错误原因: 在f2.py文件中, f2属于module2,module2是顶层包。
“. .module1.f1”, 则表示从module2的上层包中引用module1. 此时已经定位到app文件夹的位置了,超过了顶层包module2,因此报 “attempted relative import beyond top-level package”的错误。
在这里,解决办法是使用绝对导入:
# f2.py
import module1.f1
因为入口文件是 main.py, 以这个路径为基础,f1的绝对路径就是 module1.f1