Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Plotly Dash application not running

I am attempting to run the following code from jupyter notebook:

import dash
import dash_core_components as dcc
import dash_html_components as html

external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css']

app = dash.Dash(__name__, external_stylesheets=external_stylesheets)

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)

It produces the following:

 * Serving Flask app "__main__" (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: on
 * Running on http://127.0.0.1:8050/ (Press CTRL+C to quit)
 * Restarting with stat
An exception has occurred, use %tb to see the full traceback.

SystemExit: 1


//anaconda3/lib/python3.7/site-packages/IPython/core/interactiveshell.py:3333: UserWarning:

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

When I click on http://127.0.0.1:8050/ , the page never loads. I've been trying this for awhile now. Is there something in the response that I am missing? This should be a basic dash application.

Here is the traceback:

---------------------------------------------------------------------------
SystemExit                                Traceback (most recent call last)
<ipython-input-1-b057c246c3cf> in <module>
     29 
     30 if __name__ == '__main__':
---> 31     app.run_server(debug=True)
     32 
     33 get_ipython().run_line_magic('tb', '')

//anaconda3/lib/python3.7/site-packages/dash/dash.py in run_server(self, port, debug, **flask_run_options)
    566                    debug=False,
    567                    **flask_run_options):
--> 568         self.server.run(port=port, debug=debug, **flask_run_options)

//anaconda3/lib/python3.7/site-packages/flask/app.py in run(self, host, port, debug, load_dotenv, **options)
    988 
    989         try:
--> 990             run_simple(host, port, self, **options)
    991         finally:
    992             # reset the first request information if the development server

//anaconda3/lib/python3.7/site-packages/werkzeug/serving.py in run_simple(hostname, port, application, use_reloader, use_debugger, use_evalex, extra_files, reloader_interval, reloader_type, threaded, processes, request_handler, static_files, passthrough_errors, ssl_context)
   1005         from ._reloader import run_with_reloader
   1006 
-> 1007         run_with_reloader(inner, extra_files, reloader_interval, reloader_type)
   1008     else:
   1009         inner()

//anaconda3/lib/python3.7/site-packages/werkzeug/_reloader.py in run_with_reloader(main_func, extra_files, interval, reloader_type)
    330             reloader.run()
    331         else:
--> 332             sys.exit(reloader.restart_with_reloader())
    333     except KeyboardInterrupt:
    334         pass

SystemExit: 1
like image 968
AdamA Avatar asked Jan 04 '20 02:01

AdamA


People also ask

Is Plotly Dash better than tableau?

Compared to traditional visualization tools like Tableau, Plotly allows full control over what is being plotted. Since Plotly is plotted based on Pandas, you can easily perform complex transformations to your data before plotting it.

How do you install a Dash in Anaconda?

Step 3: At first, the terminal of Anaconda or Conda should be opened. Then the following command should be used conda install -c conda-forge dash, it is sufficient to install all dependencies (renderer, components, plotly..) Step 3: After that, the installation will be completed.

Can I use Plotly Dash for free?

Yes. Plotly's Dash analytics application framework is also free and open-source software, licensed under the MIT license.

Is Plotly and Dash the same?

Dash is a python framework created by plotly for creating interactive web applications. Dash is written on the top of Flask, Plotly.


2 Answers

Out of the box, as stated by a previous answer, you can't run debug=True. Hence people stick with:

On jupyter, do:

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

on editor such as VSCode, you can do:

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

You're still keen on using Jupyter instead of a code editor?
The discussion of the issue started from this resolved Github issue; the need to disable debug was highlighted here in plotly; and the discussion gave birth to jupyter-dash as a solution.

The problem is that:
Enabling the debug mode directly enables the reloader. In turn, the reloader will cause any Flask app to be initialized twice at startup this is what Jupyter can't cope with. Infact, you can even run debug=True in jupyter provided you disable the reloader.

Thus, you can do:

if __name__ == '__main__':
    app.run_server(debug=True, use_reloader=False)
like image 163
I.Ewetoye Avatar answered Nov 02 '22 10:11

I.Ewetoye


You can't run dash in debug mode on a jupyter notebook, you'll have to disable debug mode or move to a good old fashion text editor/IDE:

if __name__ == '__main__':
    app.run_server(debug=False)
like image 28
Jay Mody Avatar answered Nov 02 '22 11:11

Jay Mody