Python 为什么相对导入在我的项目中不起作用?

Python 为什么相对导入在我的项目中不起作用?,python,import,Python,Import,我正在从事一个python项目,该项目由几个包和模块组成。因此,我需要从不同的包中导入模块。然而,当导入这些模块时,我会收到导入错误。文件夹结构如下所示: 在模块Stage0.py中,我使用相对导入:“from..data.Datapipe import DataFactory”来导入类DataFactory。但是,当我执行脚本时,会收到一条错误消息:“ModuleNotFoundError:没有名为'MT'的模块” 我将非常感谢您的反馈,因为我正变得绝望作为一个简单的解决方案,我建议您将St

我正在从事一个python项目,该项目由几个包和模块组成。因此,我需要从不同的包中导入模块。然而,当导入这些模块时,我会收到导入错误。文件夹结构如下所示:

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


我将非常感谢您的反馈,因为我正变得绝望

作为一个简单的解决方案,我建议您将Stage0.py放在与requirements.txt相同的位置,并从那里执行它

详情如下:

-data/
    -__init__.py
    -Datapipe.py
-graph/
    -__init__.py
    -s0.py
-stage0.py
stage0.py


from data.Datapipe import DataFactory

我不能100%确定我是否正确理解了这一点,但从运行Stage0.py时的外观来看,它会将根python路径设置为应用程序目录,问题是python使用相对导入只允许查找该根目录中的文件,这个网站更诚实地解释了这一点

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


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

。感谢您的输入,如果我创建一个main.py模块,它将正常工作。但是,您对本模块应包括的内容有何建议。现在我知道它只包含一个if name==“main”并从应用程序包导入。如果不知道更多关于脚本正在做什么的上下文,很难说,但实际上您的
\uu main\uuuuuuuuuuuuuy.py
文件目前正在做的是作为另一个脚本的代理,允许它将mt作为根脚本,将stage0.py封装在一个函数中,然后在
if name==main
部分调用它可能会更好,但这取决于您是否希望seams能够工作,但是,我希望将模块放在一个包中,因为我希望它具有可伸缩性,并且以后可以添加更多模块。