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

在Jupyter Lab中运行Flask文件的异常及修改后失效问题咨询

问题原因与解决方案

一、核心问题原因

1. Jupyter内核持久化引发的进程冲突

Jupyter内核是长期运行的,第一次执行app.run()时,Flask的阻塞式服务器会占用内核,导致控制台只能显示省略号(内核无法响应新输入)。修改代码后再次运行时,旧的Flask进程仍占用5000端口,且内核中已存在旧的app实例,新代码无法覆盖旧实例,进而触发内部服务器错误。

2. 模板路径配置错误

你的app.py位于stock.investing.decision.making/app/controllers/目录下,Flask默认会在当前模块所在目录的templates文件夹中查找模板文件。如果home.html没有放在app/controllers/templates/下,而是在项目根目录或其他位置,Flask会找不到模板,直接引发内部服务器错误。

3. 路径中的"app"并非直接冲突源

路径里的两个"app"不会直接导致命名冲突,Flask的__name__参数会解析为app.controllers.app,属于合法模块名。除非项目结构中存在同名包/模块间接影响文件查找,但这不是当前问题的主要诱因。

二、解决方案

1. 调整Flask启动参数,避免阻塞Jupyter内核

在Jupyter中运行Flask时,添加use_reloader=False和threaded=True参数,防止服务器阻塞内核,同时优化运行稳定性:

from flask import Flask, render_template

# 若模板不在默认路径,手动指定示例:模板在项目根目录的templates文件夹
# app = Flask(__name__, template_folder='../../templates')
app = Flask(__name__)

@app.route('/')
def home():
    return render_template('home.html')

if __name__ == '__main__':
    app.run(debug=True, use_reloader=False, threaded=True)

2. 修正模板文件路径

  • 方案一:在app/controllers/目录下创建templates文件夹,将home.html放入其中。
  • 方案二:通过template_folder参数手动指定home.html的实际存放路径(如上述代码注释所示)。

3. 修改代码后正确重启服务

  • 每次修改代码后,在Jupyter的「内核」菜单中选择「重启内核」,再重新运行代码,彻底清除旧进程与实例。
  • 也可通过系统任务管理器杀死占用5000端口的进程,再重新运行代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 20:21:22