Relative import inside project results in "SystemError: Parent module '' not loaded, cannot perform relative import"
Relative import inside project results in "SystemError: Parent module '' not loaded, cannot perform relative import"
我正在从事一个具有以下结构的项目:
project
├── config.py
└── modules
└── a.py
根据 PEP 328,相对导入是可能的。
但是,当我在与 a.py
相同的目录中启动 Python(在 shell 中)并执行以下命令时:
from ..config import *
from ...project import *
我收到以下错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
SystemError: Parent module '' not loaded, cannot perform relative import
我知道 import *
不推荐,它仅用于测试(尝试导入配置)。
相对导入只能在模块本身导入的地方工作。 运行 交互式会话中的该命令没有父模块。此外,当前目录是隐式搜索(因此被视为一个包),因此来自该目录中交互式解释器的 import a
将没有父模块。
因此,为了测试,将 PYTHONPATH 设置为项目的根目录(作为临时措施),然后从另一个目录(例如您的主目录)执行 from modules import a
。然后 a
模块可能会执行 from ..config import *
,并且只有在那时。
我正在从事一个具有以下结构的项目:
project
├── config.py
└── modules
└── a.py
根据 PEP 328,相对导入是可能的。
但是,当我在与 a.py
相同的目录中启动 Python(在 shell 中)并执行以下命令时:
from ..config import *
from ...project import *
我收到以下错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
SystemError: Parent module '' not loaded, cannot perform relative import
我知道 import *
不推荐,它仅用于测试(尝试导入配置)。
相对导入只能在模块本身导入的地方工作。 运行 交互式会话中的该命令没有父模块。此外,当前目录是隐式搜索(因此被视为一个包),因此来自该目录中交互式解释器的 import a
将没有父模块。
因此,为了测试,将 PYTHONPATH 设置为项目的根目录(作为临时措施),然后从另一个目录(例如您的主目录)执行 from modules import a
。然后 a
模块可能会执行 from ..config import *
,并且只有在那时。