0

对于以下情况,我在相对进口方面遇到了一些麻烦。

我有一个包,有两个模块目录,我想将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

我想了解:

  • 为什么这个配置不起作用?
  • 为了具体针对这种情况执行相对导入,必须做什么?
4

1 回答 1

1

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

python3 -m builder.build_moto

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

-m mod:将库模块作为脚本运行(终止选项列表)

于 2017-10-27T21:12:07.210 回答