我编写了一个 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 your_app.py
而不是直接从 Spyder 运行。
一些 Spyder 专家应该对此进行更多阐述,
我对此的假设,再次不是 Spyder 专家,理想情况下
Run file
应该运行上述命令,但假设 Spyder 是一种 ipykernel
,它可能不会将完整的代码作为主文件执行,而不是运行它通过导入你的代码? (不确定),您可以通过查看__name__
来检查它可能不是__main__
!