来自同一包

时间:2017-10-27 20:57:41

标签: python python-3.x relative-import

我遇到以下情况下的相对进口问题。

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

我想明白:

  • 为什么这个配置不起作用?
  • 为了在特定情况下对此案例执行相对导入,必须采取哪些措施?

1 个答案:

答案 0 :(得分:1)

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

java.util.logging.FileHandler.pattern=C:\Users\cardal\ApplicationLog.html

python3 -m builder.build_moto 参数表示您将模块作为库的一部分运行:

  

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