You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flask应用中__main__.py无法导入自身模块的问题求助

问题分析与解决

错误原因

你的项目是嵌套的app/app目录结构:外层app是项目根目录,内层app是Python包。当你直接运行内层的__main__.py时,Python会将该文件所在的目录(内层app目录)添加到sys.path中,而外层app目录不在sys.path里,因此Python找不到名为app的模块(因为此时sys.path指向的目录下没有app文件夹)。

解决办法

方法一:通过包方式运行(推荐)

切换到外层app目录(也就是/Users/joey/projects/app),执行以下命令:

python -m app

这种方式会让Python将外层目录加入sys.path,从而正确识别内层的app包,执行__main__.py中的代码。

方法二:修改__main__.py的导入方式

将__main__.py中的绝对导入改为相对导入(因为__main__.py和__init__.py属于同一个包):

from . import serve

serve()

注意:这种方式下,你仍然不能直接运行__main__.py(比如python __main__.py),否则会触发相对导入的错误,还是需要用方法一的python -m app命令运行。

关于“运行的文件无法使用相对导入”的说明

这个说法部分正确:

  • 当你直接运行单个Python文件(如python file.py)时,该文件会被当作顶层的__main__模块,此时使用相对导入会报错,因为相对导入依赖于包的上下文,而直接运行的脚本不属于任何包结构。
  • 但如果通过python -m package.module的方式运行模块,模块会作为包的一部分被加载,此时可以正常使用相对导入。

内容的提问来源于stack exchange,提问作者lycheejelly

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 21:29:55