开启Debug模式后Flask自动重载功能失效,如何解决?
Flask Debug模式开启但自动重载失效的解决步骤
确认.env文件正确加载
在app.py中添加代码验证.env是否被读取:import os from dotenv import load_dotenv load_dotenv() # 确保调用加载方法 print(os.getenv("FLASK_DEBUG")) # 正常应输出1 print(os.getenv("FLASK_APP")) # 正常应输出app若输出为空,先安装依赖:
pip install python-dotenv,再确保.env文件位于项目根目录。统一debug配置,消除冲突
不要同时在app.py中设置debug=True和.env中配置FLASK_DEBUG=1,二选其一:- 方案1:保留.env的
FLASK_DEBUG=1,删除app.py里的app.debug = True或app.run(debug=True) - 方案2:删除.env的
FLASK_DEBUG=1,在app.py中用app.run(debug=True)启动(此时直接执行python app.py,而非flask run)
- 方案1:保留.env的
更换Werkzeug的reloader类型
安装更稳定的watchdog依赖:pip install watchdog然后指定reloader启动:
flask run --reloader=watchdog清理残留进程
旧进程未完全终止可能导致监听异常:- Linux/macOS:执行
pkill python或pkill flask - Windows:打开任务管理器,结束所有Python相关进程
之后重新启动flask run
- Linux/macOS:执行
避免插件与自带reloader冲突
若使用Flask-Livereloader,不要同时依赖Flask自带reloader:- 安装插件:
pip install flask-livereload - 修改app.py代码:
from flask import Flask from flask_livereload import LiveReload app = Flask(__name__) LiveReload(app) @app.route('/') def index(): return 'Hello' if __name__ == '__main__': app.run(debug=True, use_reloader=True) - 直接执行
python app.py启动,而非flask run
- 安装插件:
检查权限与路径
- 确保项目目录有当前用户的读写权限
- 将
FLASK_APP改为明确路径,比如FLASK_APP=app.py,避免模块路径识别错误
内容的提问来源于stack exchange,提问作者Taylor Threader
相关产品推荐
相关产品推荐

