同一包目录之间的相对导入
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)
对于以下情况,我在使用相对导入时遇到了一些问题。
我有一个包含两个模块目录的包,我想将 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)