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

Flask debug模式启动报错:AttributeError: module '__main__'无__package__属性

解决Flask Debug模式在Spyder中启动崩溃的问题

你遇到的AttributeError: module '__main__' has no attribute '__package__'错误,根源在于Spyder IDE的runfile执行机制——它在运行脚本时没有给__main__模块设置__package__属性,而Flask依赖的Werkzeug重载器在重启应用时恰好需要这个属性来定位你的应用包结构。

下面是几个可行的解决方案:

方案1:手动设置__package__属性(最适配Spyder)

在你的启动文件(wsgi.py)中,在启动应用前手动指定应用的包名,让重载器能正确识别结构:

from application import create_app
app = create_app()

if __name__ == "__main__":
    # 手动设置包名,对应你的application包
    __package__ = "application"
    app.run(host='0.0.0.0')

修改后再启动,Debug模式的自动重载就能正常工作了。

方案2:临时关闭自动重载

如果你暂时不需要代码修改后的自动重启功能,可以直接关闭重载器:

from application import create_app
app = create_app()

if __name__ == "__main__":
    app.run(host='0.0.0.0', use_reloader=False)

这种方式能快速绕过报错,但每次修改代码后都需要手动重启应用。

方案3:用命令行启动(推荐的标准方式)

Spyder的runfile执行方式容易引发这类环境兼容问题,更推荐直接在终端进入项目根目录,用标准命令启动:

python wsgi.py

这种方式下Python会自动正确设置__package__属性,Debug模式的所有功能都能正常运行。

额外小提示

关于你配置的.env文件,确保在create_app函数开头主动加载它(虽然这不是当前报错的原因,但能保证环境变量生效):

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from dotenv import load_dotenv
import os

db = SQLAlchemy()

def create_app():
    # 加载.env文件中的环境变量
    load_dotenv()
    app = Flask(__name__, instance_relative_config=False)
    app.config.from_object('config.DevConfig')
    db.init_app(app)
    
    with app.app_context():
        from . import routes
        db.create_all()
    return app

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 06:48:37