如何在绝对导入的子目录中运行python脚本

时间:2019-05-04 16:19:37

标签: python python-3.x

我具有以下目录结构和文件:

├── a
│   ├── b
│   │   ├── b.py
│   └── c
│       ├── c.py
└── main.py

# main.py
from a.b import b
print('i am main')

# a/b/b.py
from a.c import c
print('i am b')

# a/c/c.py
print('i am c')

以下工作正常并且可以预期。

» python3 main.py
i am c
i am b
i am main

但是,如果我进入目录a/b并运行

python3 b.py

我得到:

» python3 b.py
Traceback (most recent call last):
  File "b.py", line 1, in <module>
    from a.c import c
ModuleNotFoundError: No module named 'a'

如果我尝试从项目的根目录运行它

» python3 a/b/b.py
Traceback (most recent call last):
  File "a/b/b.py", line 1, in <module>
    from a.c import c
ModuleNotFoundError: No module named 'a'

有意义的是,它找不到目录上方一级的模块,但是在这种情况下,如何运行a/b/b.py脚本?

1 个答案:

答案 0 :(得分:0)

我仍然想更好地解释它为什么起作用。但是我从this答案中得到了一个提示。 您可以运行

python3 -m a.b.b 

运行b.py目录中的a/b/