在子目录中工作时如何正确导入模块?

时间:2019-06-27 08:26:00

标签: python python-3.x module directory-structure

我有一个项目,希望在其中分层构建代码。程序的不同部分执行的操作非常不同,我希望有一个干净的上层将子目录中的所有代码绑定在一起。

但是,我很难正确导入模块。

说我有结构

Project
└──manage.py
   └──part a
      ├──script_a.py
      ├──__init__.py
      └──modules_a
         ├──module_a1.py
         ├──module_a2.py
         ├──module_a3.py
         └──__init__.py
   └──part b
      ├──script_b.py
      ├──__init__.py
      └──modules_b
         ├──module_b1.py
         ├──module_b2.py
         ├──module_b3.py
         └──__init__.py

如果我在script_a.py中编写依赖于module_a1.py的代码,我会使用

from modules_a import module_a1

这可行,但是VS Code对导入永远不满意,总是将导入标记为错误。因此,我想知道是否在逻辑上我被误解了,特别是因为script_a.py不在根文件夹中?

2 个答案:

答案 0 :(得分:0)

如果您在包中,并且要访问子包,则必须在子包前面放置.。因此,从

更改导入声明
from modules_a import module_a1

from .modules_a import module_a1

然后错误消失。

答案 1 :(得分:0)

我决定通过在根文件夹中添加测试文件并仅运行测试文件中的脚本来解决该问题,该脚本的功能与稍后将作为执行脚本的manage.py相似。