简体   繁体   中英

Launch Dash from Jupyter Notebook

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.

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.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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