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

Plotly Dash应用无本地URL输出且运行行为异常求助

Dash应用运行无本地URL输出、脚本直接终止的问题

问题现象

运行Dash应用时,控制台未输出本地主机URL,脚本直接终止,控制台输出如下:

starting app...
<IPython.lib.display.IFrame at 0x238562976a0>
In [19]: 

预期输出

正常情况下控制台应输出:

Dash is running on http://127.0.0.1:8050/

 * 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: off
 * Running on http://127.0.0.1:8050 (Press CTRL+C to quit)

环境版本信息

使用conda环境,相关包版本:

plotly                    5.16.1                   pypi_0    pypi
dash                      2.11.1                   pypi_0    pypi
dash-core-components      2.0.0                    pypi_0    pypi
dash-html-components      2.0.0                    pypi_0    pypi
dash-table                5.0.0                    pypi_0    pypi
python                    3.10.9               h966fe2a_2

背景情况

  • 最初通过conda forge分别安装plotly和Dash,能正常输出URL,但应用报ModuleNotFoundError: no module named plotly.io.json错误
  • 重建环境后按官方指引用pip安装Dash(plotly随Dash捆绑安装),出现当前问题:浏览器可访问应用,但控制台显示脚本已终止,怀疑应用无法实时更新

应用代码

import plotly.graph_objects as go
from dash import Dash, callback, html, dcc, dash_table, Input, Output, State, MATCH, ALL

app = Dash(__name__)

user_files = list(app_data.keys())

app.layout = html.Div([dcc.Tabs(id = 'user_tabs',
                       value = 'Single metric',
                       vertical = True,
                       children = [dcc.Tab(label = 'Single metric', 
                                   children=[html.Div([dcc.Dropdown(user_files, 
                                             user_files[0], 
                                             id='json_dropdown')
                                             ]),
                                             html.Div([dcc.Dropdown(id='record_dropdown')
                                                      ]),
                                             html.Div([dcc.Dropdown(id='bgc_dropdown')
                                                      ]),
                                             html.Div([dcc.Dropdown(['vis1', 
                                                                     'vis2', 
                                                                     'vis3', 
                                                                     'vis4'], 
                                                                    'vis1', 
                                                                    id='vis_dropdown')
                                                      ]),
                                             html.Div([dcc.Dropdown(mib_values, 
                                                       mib_values[0], 
                                                       id='mib_value')
                                                      ],id = 'mib_tab_style'),
                                             html.Div([dcc.Dropdown(operations, 
                                                       operations[0], 
                                                       id='mib_operation')
                                                       ],id = 'operation_tab_style'),
                                             html.Div([dcc.Graph(id='single_graph')],
                                                      style = {'width': '50%'}),
                                                 ])]
                               )])

if __name__ == '__main__':
    print ('launching app')
    app.run(debug = False)

解决方法

  1. 强制启用外部服务器模式
    问题根源是Dash检测到IPython环境后自动启用内嵌IFrame模式,导致脚本不阻塞运行。修改app.run()调用,添加mode="external"参数:

    if __name__ == '__main__':
        print ('launching app')
        app.run(debug=False, mode="external")
    

    此设置会让Dash以外部服务器模式运行,控制台将输出正常URL并保持运行,直到按下Ctrl+C终止。

  2. 修复依赖冲突

    • 执行pip check检查是否存在依赖版本不兼容问题
    • 若仍有plotly相关错误,强制重新安装指定版本:
      pip install plotly==5.16.1 --force-reinstall
      
  3. 统一包安装方式
    避免混合使用conda和pip安装依赖:要么全用conda,要么全用pip。如果选择pip,确保conda环境中没有预装的plotly/Dash包干扰。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 22:17:47