对于以下情况,我在相对进口方面遇到了一些麻烦。
我有一个包,有两个模块目录,我想将dir_b
一个模块从dir_a
.
这是我的包结构的示例:
$ tree
.
├── builder
│ ├── build_moto.py
│ └── __init__.py
├── __init__.py
└── parts
├── car.py
├── __init__.py
├── moto.py
└── truck.py
我正在尝试使用相对导入moto
在内部导入,如下所示:build_moto
$ cat builder/build_moto.py
#!/usr/bin/python3
from .parts import moto
...但是当我执行时build_moto.py
,它会产生以下错误:
$ python3 builder/build_moto.py
Traceback (most recent call last):
File "builder/build_moto.py", line 3, in <module>
from .parts import moto
SystemError: Parent module '' not loaded, cannot perform relative import
我想了解:
- 为什么这个配置不起作用?
- 为了具体针对这种情况执行相对导入,必须做什么?