在Python 3中,相对导入被定义为从正确的父包引用模块。如果尝试使用相对导入,但没有已知的父包,就会出现此错误。
解决方案之一是将文件夹标识为模块,创建一个空的__init__.py文件。
假设我们由此文件结构:
project/
main.py
directory/
helper.py
如果我们想从helper.py导入main.py,但在导入时遇到相对导入错误消息,我们可以将directory文件夹标识为模块。为此,我们创建一个空的__init__.py文件。可以这样做:
project/
main.py
directory/
init.py
helper.py
现在helper.py可以从main.py相对引用:
from ..main import some_function
请注意,在Python 2中,相对导入被定义为使用相对路径从当前目录引用模块,因此此错误不会出现。