在Anaconda环境中,无法在VS Code中为Plotly Dash运行本地服务器

时间:2019-07-16 13:51:01

标签: visual-studio flask jupyter-notebook anaconda plotly-dash

我正在将Dash Plotly的教程用于应用程序(https://dash.plot.ly/getting-started),并且之前运行良好。现在,我似乎无法在没有以下错误消息的情况下启动本地主机服务器:

**更新**当我通过PyCharm运行测试服务器时,它可以工作,所以某种程度上Anaconda和Jupyter似乎是问题所在。

Running on http://127.0.0.1:8050/
Debugger PIN: 749-807-877
 * Serving Flask app "__main__" (lazy loading)
 * Environment: production
   WARNING: Do not use the development server in a production environment.
   Use a production WSGI server instead.
 * Debug mode: on
An exception has occurred, use %tb to see the full traceback.

SystemExit: 1

当我尝试再次运行服务器时,它产生了此错误:

 in 
     19 
     20 if __name__ == '__main__':
---> 21     app.run_server(debug=True)

/anaconda3/lib/python3.7/site-packages/dash/dash.py in 
run_server(self, port, debug, dev_tools_ui, dev_tools_props_check, 
dev_tools_serve_dev_bundles, dev_tools_hot_reload, 
dev_tools_hot_reload_interval, dev_tools_hot_reload_watch_interval, 
dev_tools_hot_reload_max_retry, dev_tools_silence_routes_logging, 
**flask_run_options)
   1501             self.logger.info('Debugger PIN: %s', 
debugger_pin)
   1502 
-> 1503         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)
    941 
    942         try:
--> 943             run_simple(host, port, self, **options)
    944         finally:
    945             # 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)
        793             s = socket.socket(address_family, 
    socket.SOCK_STREAM)
        794             s.setsockopt(socket.SOL_SOCKET, 
   socket.SO_REUSEADDR, 1)
    --> 795             s.bind(get_sockaddr(hostname, port, 
    address_family))
        796             if hasattr(s, 'set_inheritable'):
        797                 s.set_inheritable(True)

    OSError: [Errno 48] Address already in use


    Forums and FAQs

    ```import dash
    import dash_core_components as dcc
    import dash_html_components as html
    from dash.dependencies import Input, Output

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

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

    app.layout = html.Div([
        dcc.Input(id='my-id', value='initial value', type='text'),
        html.Div(id='my-div')
    ])


    @app.callback(
        Output(component_id='my-div', component_property='children'),
        [Input(component_id='my-id', component_property='value')]
    )
    def update_output_div(input_value):
        return 'You\'ve entered "{}"'.format(input_value)


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


    Running on http://127.0.0.1:8050/
    Running on http://127.0.0.1:8050/
    Running on http://127.0.0.1:8050/
    Running on http://127.0.0.1:8050/
    Running on http://127.0.0.1:8050/
    Running on http://127.0.0.1:8050/
    Running on http://127.0.0.1:8050/
    Running on http://127.0.0.1:8050/
    Running on http://127.0.0.1:8050/
    Debugger PIN: 715-884-879
    Debugger PIN: 715-884-879
    Debugger PIN: 715-884-879
    Debugger PIN: 715-884-879
    Debugger PIN: 715-884-879
    Debugger PIN: 715-884-879
    Debugger PIN: 715-884-879
    Debugger PIN: 715-884-879
    Debugger PIN: 715-884-879
     * Serving Flask app "__main__" (lazy loading)
     * Environment: production
       WARNING: Do not use the development server in a production environment.
       Use a production WSGI server instead.
     * Debug mode: on
    ---------------------------------------------------------------------------
    OSError                                   Traceback (most recent call last)
     in 
         19 
         20 if __name__ == '__main__':
    ---> 21     app.run_server(debug=True)

    /anaconda3/lib/python3.7/site-packages/dash/dash.py in run_server(self, port, debug, dev_tools_ui, dev_tools_props_check, dev_tools_serve_dev_bundles, dev_tools_hot_reload, dev_tools_hot_reload_interval, dev_tools_hot_reload_watch_interval, dev_tools_hot_reload_max_retry, dev_tools_silence_routes_logging, **flask_run_options)
       1501             self.logger.info('Debugger PIN: %s', debugger_pin)
       1502 
    -> 1503         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)
        941 
        942         try:
    --> 943             run_simple(host, port, self, **options)
        944         finally:
        945             # 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)
        793             s = socket.socket(address_family, socket.SOCK_STREAM)
        794             s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    --> 795             s.bind(get_sockaddr(hostname, port, address_family))
        796             if hasattr(s, 'set_inheritable'):
        797                 s.set_inheritable(True)

    OSError: [Errno 48] Address already in use

我检查了所有可以找到此问题的论坛,但似乎找不到解决此问题的任何解决方案。 在擦除硬盘驱动器并重新安装Anaconda,Dash和VS代码之前,运行本地服务器运行良好。

1 个答案:

答案 0 :(得分:0)

Address already in use表示您尝试使用的端口已被另一个应用程序使用。确保您正确关闭了以前可能运行过的所有Flask(Dash)服务器,或杀死了所有剩余进程。

如果您需要使用其他端口,则可以将app.run_server(debug=True)更改为app.run_server(debug=True, port=1337)