Windows下Flask加载已删除页面,app.py修改不生效问题排查
问题现象
- Windows环境下通过
python app.py启动Flask服务,已从app.py中删除/new_data_table路由,但访问该地址仍能正常加载 - 修改app.py后多次重启服务,代码变更始终不生效
- 已删除
.ipynb_checkpoints、__pycache__文件夹,问题依旧 - 执行
flask routes仅显示默认static路由,但旧路由仍可访问
当前app.py代码:
from flask import Flask app = Flask(__name__) app.debug = True if __name__ == "__main__": app.run(debug=True)
启动日志异常输出:
PS C:\Users\Documents\main> python app.py * Serving Flask app "app" (lazy loading) * Environment: production WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. * Debug mode: on * Restarting with watchdog (windowsapi) * Debugger is active! * Debugger PIN: 372-211-807 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit) * Detected change in 'C:\\Users\\Documents\\main\\.ipynb_checkpoints\\app-checkpoint.py', reloading * Restarting with watchdog (windowsapi) * Debugger is active! * Debugger PIN: 372-211-807 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit) * Detected change in 'C:\\Users\\Documents\\main\\.~app.py', reloading * Detected change in 'C:\\Users\\Documents\\main\\.~app.py', reloading * Detected change in 'C:\\Users\\Documents\\main\\.~app.py', reloading * Detected change in 'C:\\Users\\Documents\\main\\app.py', reloading * Detected change in 'C:\\Users\\Documents\\main\\app.py', reloading * Detected change in 'C:\\Users\\Documents\\main\\.~app.py', reloading * Restarting with watchdog (windowsapi) * Debugger is active! * Debugger PIN: 372-211-807 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
排查与解决步骤
1. 清理隐藏临时文件
从启动日志可见,Flask的watchdog频繁检测到.~app.py文件变化,这是Windows下部分编辑器生成的自动备份临时文件,Flask懒加载机制可能误加载该文件:
- 打开文件资源管理器,开启「显示隐藏文件」选项
- 删除项目目录下的
.~app.py文件 - 彻底终止所有Python进程(任务管理器中结束
python.exe进程)后重新启动服务
2. 清除浏览器缓存
浏览器可能缓存了旧路由页面,导致后端路由删除后仍能显示:
- 按
Ctrl+Shift+Delete打开缓存清除界面,勾选「缓存的图片和文件」,选择「全部时间」后清除 - 使用无痕窗口访问
http://127.0.0.1:5000/new_data_table测试
3. 强制指定Flask加载文件
启动时显式指定加载文件,避免加载缓存或临时文件:
set FLASK_APP=app.py set FLASK_ENV=development flask run
执行后重新运行flask routes,确认路由列表正确。
4. 检查残留后台进程
Windows下可能存在未终止的Flask后台进程,导致旧代码持续运行:
- 打开任务管理器「详细信息」标签
- 结束所有
python.exe进程 - 重新启动Flask服务
内容的提问来源于stack exchange,提问作者Joel Joseph
相关产品推荐
相关产品推荐

