【问题标题】:Error Trying to initialize Dash in Spyder IPython Console尝试在 Spyder IPython 控制台中初始化 Dash 时出错
【发布时间】:2018-03-19 19:03:25
【问题描述】:

我在尝试使用 Dash 运行简单仪表板时遇到错误。我将 Spyder 与 Python 3.4 一起使用。我有pip installeddash, dash_core_components, dash_html_compenents..

我的代码:

import dash
import dash_core_components as dcc
import dash_html_components as html

app = dash.Dash()

app.layout = html.Div(children=[
    html.H1(children='Hello Dash'),

    html.Div(children='''
        Dash: A web application framework for Python.
    '''),

    dcc.Graph(
        id='example-graph',
        figure={
            'data': [
                {'x': [1, 2, 3], 'y': [4, 1, 2], 'type': 'bar', 'name': 'SF'},
                {'x': [1, 2, 3], 'y': [2, 4, 5], 'type': 'bar', 'name': u'Montréal'},
            ],
            'layout': {
                'title': 'Dash Data Visualization'
            }
        }
    )
])

if __name__ == '__main__':
    app.run_server(debug=True)

这取自Dash/Plotly website tutorial

我收到以下错误:

 * Running on http://127.0.0.1:8050/ (Press CTRL+C to quit)
 * Restarting with stat
C:\Users\mwolfe\AppData\Local\Continuum\anaconda3\envs\py34\lib\site-packages\IPython\core\interactiveshell.py:2889: UserWarning:

To exit: use 'exit', 'quit', or Ctrl-D.

An exception has occurred, use %tb to see the full traceback.

SystemExit: 1

当我转到http://127.0.0.1:8050/ 尝试查看示例仪表板时,它不会加载。

我已尝试this 来解决此问题,但无法使其正常工作。

【问题讨论】:

  • 你试过查看完整的回溯吗?
  • 此处是 Spyder 维护者)请在我们的issues tracker 中打开一个错误,以便我们尝试修复/改进这个问题。我知道为什么会这样,但我不知道 Dash 是如何产生这个错误的。
  • 如果这阻碍了您的开发,您可能需要尝试从命令行运行您的 dash 应用程序。此外,如果有帮助,我记录了我构建 dash 应用程序(并部署到 Heroku)here 的经验
  • 尝试将 Debug 设置为 False。它对我有用。
  • @ScarletAndGray Spyder 在我设置 debug= False 时挂断

标签: python spyder plotly-dash


【解决方案1】:

Pechi 的回答更新:现在设置 debug=False 也适用于 Jupyter Notebook。我在那里测试了 Matt 的代码,并且 URL 工作正常。

但是,我认为问题主要在于 use_reloader。您必须在 Jupyter Notebook 中将其设置为 False(根据 Plotly 文档)。所以,这也适用于我的笔记本:

import dash
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Input, Output

app = dash.Dash()

app.layout = html.Div(
html.H1(children="Hello000")
)
if __name__ == '__main__':
    app.run_server(debug=True, use_reloader=False). <---- Here

此外,请确保您之前启动的任何应用程序都已停止(ctrl + c 或简单地使用笔记本中的方形按钮(或按键盘上的“i”两次)来停止执行)。

【讨论】:

    【解决方案2】:

    设置debug=False 确实解决了问题,但不适用于 Jupyter notebook 和 Spyder。当使用 notebook/spyder 执行代码时,代码会陷入困境。

    将您的代码更改为debug=False 并在Anaconda Navigator 附带的PyQt 控制台中执行它。它有效。

    【讨论】:

    • 是的,但是为什么呢?如果我想运行调试模式怎么办?
    • 我相信 debug=False 可以让您的代码更改实时反映在仪表板中。
    猜你喜欢
    • 1970-01-01
    • 2015-11-16
    • 2015-01-27
    • 1970-01-01
    • 2020-11-19
    • 2017-03-09
    • 2020-04-16
    • 2014-01-04
    • 2018-05-15
    相关资源
    最近更新 更多