简体   繁体   English

从Jupyter Notebook启动Dash

[英]Launch Dash from Jupyter Notebook

Is there a way I can launch a Dash dahsboard using the below line of code in Jupyter notebook? 有什么方法可以使用Jupyter笔记本中的以下代码行启动Dash dahsboard?

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

When I try to launch this I get an error. 当我尝试启动此程序时,出现错误。

The only way to correct it is to set debug to false. 纠正它的唯一方法是将debug设置为false。 But then the Dashboard does not update automatically when the data feeding the charts is altered. 但是,当更改提供给图表的数据时,仪表板不会自动更新。

EDIT 编辑

I just found out that a valuable GitHub user published the following library . 我刚刚发现一个有价值的GitHub用户发布了以下库 This is the direct link to the respective repo . 这是到各个仓库的直接链接。 See his documentation and examples to implement it successfully within jupyter. 请参阅他的文档和示例以在jupyter中成功实现它。 It worked for me. 它为我工作。

DON'T understimate this statement before installing the library: "Use of a virtualenv environment is strongly recommended"! 在安装该库之前,请不要低估此语句:“强烈建议使用virtualenv环境”!

Original Post 原始帖子

I had this problem myself some time ago. 我前一段时间有这个问题。 I don't know if it is natively fixed by now. 我不知道它现在是否已在本地修复。 The workaround snipped I used back that time is this one. 我当时回想过的解决方法就是这个。 It is directly from Chris himself, but has stil debug = False : 它直接来自克里斯本人,但是具有stil 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)

So using it like this is switching of callback functions for you? 因此,像这样使用它可以为您切换回调函数吗? Please show some of the logic of your program. 请显示程序的一些逻辑。 Maybe I can help with further tips. 也许我可以提供更多提示。 Cheers. 干杯。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM