在使用Python文件时,我们引入了一个Package的概念,这样方便我们去调用我们写的函数,而不需要重新复制一遍。但是在包导入的时候,会出现各种各样的问题。
在使用以下方法进行导包的时候:
from . import xxx
from .. import xxx
会出现
SystemError: Parent module '' not loaded, cannot perform relative import
ValueError: attempted relative import beyond top-level package
这样的问题。
其实这两个错误的原因归根结底是一样的:在涉及到相对导入时,package所对应的文件夹必须正确的被python解释器视作package,而不是普通文件夹。否则由于不被视作package,无法利用package之间的嵌套关系实现python中包的相对导入。
文件夹被python解释器视作package需要满足两个条件:
1、文件夹中必须有__init__.py文件,该文件可以为空,但必须存在该文件。
2、不能作为顶层模块来执行该文件夹中的py文件(即不能作为主函数的入口)。
相对导入时不能超出最高层级的package。