3

我正在开发一个具有以下结构的项目:

project
├── config.py
└── modules
    └── a.py

根据PEP 328 ,相对进口是可能的。但是,当我在同一目录中启动 Python(在 shell 中)a.py并执行以下命令时:

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 *不建议这样做,它仅用于测试(尝试导入配置)。

4

1 回答 1

4

相对导入只能在模块本身被导入的情况下工作。在交互式会话中运行该命令没有父模块。此外,当前目录是隐式搜索的(因此被视为一个包),因此import a该目录中的交互式解释器将没有父模块。

因此,要进行测试,请将 PYTHONPATH 设置为项目的根目录(作为临时措施),然后from modules import a从另一个目录(例如您的主目录)执行。然后该a模块可以执行from ..config import *, 并且仅在那时。

于 2016-07-16T22:43:38.383 回答