localhost:5000 在 macOS v12 (蒙特雷) 中不可用

non*_*ame 54 python localhost macos-monterey

我无法访问macOS v12 (Monterey)(Flask或任何其他)上的本地主机端口 5000 上的 Web 服务器。

例如,使用内置的 HTTP 服务器,我无法访问端口 5000:

python3 -m http.server 5000

... (stack trace)
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/socketserver.py", line 466, in server_bind
self.socket.bind(self.server_address)
OSError: [Errno 48] Address already in use
Run Code Online (Sandbox Code Playgroud)

如果您安装了 Flask 并且运行 Flask Web 服务器,则它不会在启动时失败。让我们看一下最小的 Flask 示例代码:

# Save as hello.py in the current working directory.
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello_world():
    return "<p>Hello, World!</p>"
Run Code Online (Sandbox Code Playgroud)

然后运行它(前提是你安装了 Flask/Python 3):

# Save as hello.py in the current working directory.
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello_world():
    return "<p>Hello, World!</p>"
Run Code Online (Sandbox Code Playgroud)

输出:

export FLASK_APP=hello
flask run
Run Code Online (Sandbox Code Playgroud)

但是,如果您尝试访问此服务器(通过浏览器或其他任何方式),则会被拒绝:

* Running on http://127.0.0.1:5000/
Run Code Online (Sandbox Code Playgroud)

小智 145

macOS Monterey 引入了在端口 5000 上运行的AirPlay 接收器。这会阻止您的 Web 服务器在端口 5000 上提供服务。接收器已经拥有该端口

\n

您可以:

\n
    \n
  1. 关闭 AirPlay 接收器,或者;
  2. \n
  3. 在不同的端口上运行服务器(通常最好)。
  4. \n
\n

关闭 AirPlay 接收器

\n

转到系统偏好设置\xe2\x86\x92共享\xe2\x86\x92取消选中 Airplay 接收器

\n

在此输入图像描述

\n

查看更多详情

\n

您现在应该能够在端口 5000 上重新运行服务器并获得响应:

\n
python3 -m http.server 5000\n\nServing HTTP on :: port 5000 (http://[::]:5000/) ...\n
Run Code Online (Sandbox Code Playgroud)\n

在不同于 5000 的端口上运行服务器

\n

不再使用端口 5000 可能是一个更好的主意,因为该端口是为 macOS Monterey 上的 Airplay 接收器保留的。

\n

只是为了在不同的端口上运行服务器。无需关闭 Airplay 接收器。

\n
python3 -m http.server 4999\n
Run Code Online (Sandbox Code Playgroud)\n

或者

\n
export FLASK_APP=hello\nflask run -p 4999\n
Run Code Online (Sandbox Code Playgroud)\n

  • 您多么细心地发现并解释了根本原因:Airplay 的系统保留端口️ 已经建议了“flask run -p &lt;port&gt;”解决方案。由于问题没有明确提出,所以下次可以对“OSError:[Errno48]”进行一些研究并建议链接:[类似问题](/sf/answers/3591730131/)。 (2认同)