我正在处理我们具有以下目录结构的代码
base dir
|
--J
| |--C
| | |--H
| | | |--M_task.py
| | |
| | |--C_task.py
| | |
| | |--A_task.py
|
所有文件夹都是包。
我有两个要求:
- 我需要能够在 A_task 中导入 M_task 模块。
我能够使用
from H.M_task import method
- 在 M_task 中导入 C_task
在第二种情况下,我面临几个问题。
当我在本地机器上运行代码时可以使用绝对导入,但在部署代码时将无法使用绝对导入。所以这是毫无疑问的。
仅当我仅将from ..C_task import method
M_task 用作模块时才使用。但在某些情况下,我需要使用 main 函数将 M_task 作为脚本运行。在这种情况下,M_task 没有父文件夹,因此相对导入不起作用。
最后的手段是将父文件夹附加到sys.path
. 但我想尽可能避免这种解决方案。有没有一种更清洁的方法可以实现我想要在这里实现的目标?