Launch Dash from Jupyter Notebook

和自甴很熟 提交于 2020-01-03 03:06:06

问题


Is there a way I can launch a Dash dahsboard using the below line of code in Jupyter notebook?

# 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. But then the Dashboard does not update automatically when the data feeding the charts is altered.


回答1:


EDIT

I just found out that a valuable GitHub user published the following library. This is the direct link to the respective repo. See his documentation and examples to implement it successfully within jupyter. It worked for me.

DON'T understimate this statement before installing the library: "Use of a virtualenv environment is strongly recommended"!

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:

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.



来源:https://stackoverflow.com/questions/55478173/launch-dash-from-jupyter-notebook

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!