Plotly DASH 输出没有 URL 和意外行为

问题描述 投票:0回答:1

我编写了一个 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 环境中工作,DASH/plotly/python 版本是:

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

DASH 是按照建议的 here 通过 pip 导入的,并且plotly 与 DASH 捆绑在一起,而不是由我显式安装 - 最初我与 conda forge 分开安装了两者,这给了我期望的正常行为(URL 打印到控制台等) ),但应用程序本身已损坏(因此我重新创建了我的环境并遇到了此处描述的问题)。当我在浏览器中导航到本地主机时,应用程序本身似乎确实在运行,但我怀疑它不会更新,因为应用程序似乎已停止在控制台中运行。

我的应用程序是:

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)
python plotly conda plotly-dash anaconda3
1个回答
0
投票

尝试运行你的代码,

python your_app.py

而不是直接从 Spyder 运行。

一些 Spyder 专家应该对此进行更多阐述,

我对此的假设,再次不是 Spyder 专家,理想情况下

Run file
应该运行上述命令,但假设 Spyder 是一种
ipykernel
,它可能不会将完整的代码作为主文件执行,而不是运行它通过导入你的代码? (不确定),您可以通过查看
__name__
来检查它可能不是
__main__

© www.soinside.com 2019 - 2024. All rights reserved.