首页 > 解决方案 > 为什么相对导入在我的项目中不起作用?

问题描述

我正在开发一个由多个包和模块组成的 python 项目。因此我需要从不同的包中导入模块。但是,在导入这些模块时,我遇到了导入错误。文件夹结构如下: 文件夹结构图

在模块 Stage0.py 中,我使用相对导入:“from ..data.Datapipe import DataFactory”来导入 DataFactory 类。但是,当我执行脚本时,我收到一条错误消息:“ModuleNotFoundError: No module named 'MT'”

我会很感激任何反馈,因为我变得绝望

标签: pythonimport

解决方案


我不是 100% 确定我已经正确理解了这一点,但是当你运行 Stage0.py 时,它会将根 python 路径设置为 app 目录,问题是 python 使用相对导入只允许要在该根目录中查找文件,这个网站说实话解释得更好一些

看这里

请注意,对于相对导入,点 . 只能上升到(但不包括)包含从命令行运行的脚本的目录

无论如何,要修复它,您可以__main__.py在调用 Stage0.py 脚本的 mt 文件夹中创建一个文件,这会将 mt 文件夹设置为项目的根目录,从而可以访问其他目录。


推荐阅读