同一包目录之间的相对导入

relative imports between directories from the same package

对于以下情况,我在使用相对导入时遇到了一些问题。

我有一个包含两个模块目录的包,我想将 dir_b 中的模块导入到 dir_a 中的模块。

这是我的包结构的示例:

$ tree
.
├── builder
│   ├── build_moto.py
│   └── __init__.py
├── __init__.py
└── parts
    ├── car.py
    ├── __init__.py
    ├── moto.py
    └── truck.py

我正在尝试使用相对导入在 build_moto 中导入 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

我想了解:

通常,这个问题可以这样解决:

python3 -m builder.build_moto

-m 参数意味着您 运行 您的模块是库的一部分:

-m mod : run library module as a script (terminates option list)