从Jupyter Notebook启动Dash

时间:2019-04-02 15:15:53

标签: python jupyter-notebook plotly plotly-dash

是否可以使用Jupyter笔记本中的以下代码行启动Dash dahsboard?

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

当我尝试启动它时,我得到一个错误。

唯一的纠正方法是将debug设置为false。但是,当更改提供给图表的数据时,仪表板不会自动更新。

1 个答案:

答案 0 :(得分:2)

编辑

我刚刚发现一个有价值的GitHub用户发布了following library。这是到各个repo的直接链接。请参阅他的文档和示例以在jupyter中成功实现它。它对我有用。

在安装库之前,请不要低估此语句:“强烈建议使用virtualenv环境”!

原始帖子

我前一段时间有这个问题。我不知道它现在是否已在本地修复。我当时回想过的解决方法就是这个。它直接来自克里斯本人,但仍然带有debug = False

from IPython import display
def show_app(app,  # type: dash.Dash
             port=9999,
             width=700,
             height=350,
             offline=True,
             style=True,
             **dash_flask_kwargs):
    """
    Run the application inside a Jupyter notebook and show an iframe with it
    :param app:
    :param port:
    :param width:
    :param height:
    :param offline:
    :return:
    """
    url = 'http://localhost:%d' % port
    iframe = '<iframe src="{url}" width={width} height={height}></iframe>'.format(url=url,
                                                                                  width=width,
                                                                                  height=height)
    display.display_html(iframe, raw=True)
    if offline:
        app.css.config.serve_locally = True
        app.scripts.config.serve_locally = True
    if style:
        external_css = ["https://fonts.googleapis.com/css?family=Raleway:400,300,600",
                        "https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css",
                        "http://getbootstrap.com/dist/css/bootstrap.min.css", ]

        for css in external_css:
            app.css.append_css({"external_url": css})

        external_js = ["https://code.jquery.com/jquery-3.2.1.min.js",
                       "https://cdn.rawgit.com/plotly/dash-app-stylesheets/a3401de132a6d0b652ba11548736b1d1e80aa10d/dash-goldman-sachs-report-js.js",
                       "http://getbootstrap.com/dist/js/bootstrap.min.js"]

        for js in external_js:
            app.scripts.append_script({"external_url": js})

    return app.run_server(debug=False,  # needs to be false in Jupyter
                          port=port,
                          **dash_flask_kwargs)

那么像这样使用它可以为您切换回调函数吗?请显示程序的一些逻辑。也许我可以提供更多提示。干杯。