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

Jupyter Notebook中运行Dash时8050端口占用相关问题咨询

认知正确性说明

你认为「Jupyter Notebook内部运行Dash无需指定端口号」的认知是错误的。无论是原生Dash还是适配Jupyter的JupyterDash,run_server方法默认都会固定绑定8050端口,只要该端口被进程占用就会触发OSError。
你手动释放端口后仍报错的原因是:Jupyter中启动的Dash服务是作为当前Notebook内核的子进程运行的,系统层面释放端口不会通知内核释放进程绑定,内核仍会判定端口被占用。

无需手动更换端口的解决方案

下面三个方案可以按需选择:

  • 方案1:自动分配空闲端口(最便捷)
    给run_server的port参数传值0,操作系统会自动分配当前可用的空闲端口,无需手动指定端口号:

    app = JupyterDash(__name__)
    app.layout = html.Div([...])
    app.run_server(mode='inline', port=0)
    
  • 方案2:复用固定端口,运行前清理旧进程
    如果你想固定用同一个端口,每次运行新实例前先调用JupyterDash内置的端口清理方法杀掉旧进程即可:

    # 清理8050端口上挂的旧Dash进程
    JupyterDash._terminate_server_for_port("localhost", 8050)
    
    app = JupyterDash(__name__)
    app.layout = html.Div([...])
    app.run_server(mode='inline', port=8050)
    
  • 方案3:全局配置默认自动分配端口
    如果你不想每次调用run_server都加port=0参数,可以在代码开头全局配置默认端口规则:

    from jupyter_dash import JupyterDash
    # 全局默认使用自动分配空闲端口
    JupyterDash.default_port = 0
    
    # 后续所有实例无需单独传port参数
    app = JupyterDash(__name__)
    app.layout = html.Div([...])
    app.run_server(mode='inline')
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 14:27:03