我正在将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代码之前,运行本地服务器运行良好。
答案 0 :(得分:0)
Address already in use
表示您尝试使用的端口已被另一个应用程序使用。确保您正确关闭了以前可能运行过的所有Flask(Dash)服务器,或杀死了所有剩余进程。
如果您需要使用其他端口,则可以将app.run_server(debug=True)
更改为app.run_server(debug=True, port=1337)