我正在开发一个具有以下结构的项目:
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 *
,它仅用于测试(尝试导入配置)。
答案 0 :(得分:4)
相对导入只能在模块本身导入的地方使用。在交互式会话中运行该命令没有父模块。此外,当前目录是隐式搜索(因此被视为包),因此该目录中的交互式解释器中的import a
将没有父模块。
因此,要进行测试,请将PYTHONPATH设置为项目的根目录(作为临时措施),然后从另一个目录(例如主目录)执行from modules import a
。然后,a
模块可以执行from ..config import *
,然后才能执行EFDataReader<T>
。
答案 1 :(得分:0)
您可以通过以下方式克服此错误:
有关详细信息,请参阅ImportError: attempted relative import with no known parent package。