如何使用 shebang 并从并行目录导入模块?

Zeh*_*ort 6 python project python-import python-3.x

我有一个具有以下结构的项目:

project-name/
|
|___ __init__.py
|___ main.py
|
|___ toolA/
|    |___ __init__.py
|    |___ toolA.py
|
|___ toolB/
|    |___ __init__.py
|    |___ toolB.py
|
|___ common/
     |___ __init__.py
     |___ utils.py
Run Code Online (Sandbox Code Playgroud)

我需要工具 A 和 B(脚本toolA.pytoolB.py)才能导入位于utils.py.

此外,toolA.pytoolB.py应该是工具链的一部分(由 实现main.py),但它们也需要是独立的工具。这就是为什么我决定将它们设为可执行文件,并在它们中都包含一个 shebang:

#!/usr/bin/env python3.7
Run Code Online (Sandbox Code Playgroud)

-m我在执行时找到了一些带有该标志的解决方案python,但由于 shebang,这不是一个选项。有什么办法可以实现这一点吗?我找到了很多帖子和解决方案,但没有一个对我有用。理想情况下,我需要这样的东西,无需任何进一步的配置(如编辑路径等):

project-name/
|
|___ __init__.py
|___ main.py
|
|___ toolA/
|    |___ __init__.py
|    |___ toolA.py
|
|___ toolB/
|    |___ __init__.py
|    |___ toolB.py
|
|___ common/
     |___ __init__.py
     |___ utils.py
Run Code Online (Sandbox Code Playgroud)

或者

#!/usr/bin/env python3.7
Run Code Online (Sandbox Code Playgroud)

PS我不确定这些是否__init__.py需要,或者我是否必须在其中放入一些东西(它们目前是空白的)。