我想在 jupyter notebook 中调试小型烧瓶服务器进行演示。
我在最新的 Ubuntu 和 Python2 上创建了 virtualenv(在使用 Python3 的 Mac 上也会出现这个错误),pip install flask jupyter。
但是,当我使用 helloworld 脚本创建单元格时,它不会在笔记本中运行。
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello World!"
if __name__ == "__main__":
app.run(debug=True,port=1234)
文件“/home/***/test/local/lib/python2.7/site-packages/ipykernel/kernelapp.py”,第 177 行,在 _bind_socket s.bind(“tcp://%s:%i” % (self.ip, port)) 文件“zmq/backend/cython/socket.pyx”,第 495 行,在 zmq.backend.cython.socket.Socket.bind (zmq/backend/cython/socket.c:5653)文件“zmq/backend/cython/checkrc.pxd”,第 25 行,在 zmq.backend.cython.checkrc._check_rc (zmq/backend/cython/socket.c:10014) raise ZMQError(errno) ZMQError: Address already in use
注意 - 每次失败后我都会更改端口号。
当然,它作为独立脚本运行。
不更新 (debug=True) 就可以了。
原文由 chro 发布,翻译遵循 CC BY-SA 4.0 许可协议
我安装了 Jupyter 和 Flask,您的原始代码可以正常工作。
flask.Flask
对象是 WSGI 应用程序,而不是服务器。当您在 shell 中调用python -m flask run
时,Flask 使用 Werkzeug 的开发服务器作为WSGI
服务器。它创建一个新的 WSGI 服务器,然后将您的应用程序作为参数传递给werkzeug.serving.run_simple
。也许您可以尝试手动执行此操作:Flask.run()
--- 在内部调用run_simple()
,所以这里应该没有区别。