如何在 Mac 上用 Python 3 启动一个简单的 Web 服务器

使用 http 服务器命令在 Python 3 中启动简单的 Web 服务器

如果您是 Python 用户,您可能已经熟悉这个方便的技巧,它允许您使用在 Mac OS 命令行中输入的简单命令字符串立即创建一个简单的 Web 服务器。但是,如果您是 安装或更新到 Python 3 的 Mac Python 用户,那么您会发现先前 Python 版本中的传统命令字符串无法在新的 Python 3.x+ 版本中启动 Web 服务器。

不用担心,简单的网络服务器 Python 技巧在适用于 Mac 的 Python 3 中仍然有效(当然也适用于 Linux 和 Windows,但我们显然涵盖了 MacOS),只是命令语法略有不同。我们将向您展示如何使用 Python 3 启动简单的 Web 服务器,方法是使用相当于 python -m SimpleHTTPServer 命令的新 Python 3.0+。

如何在 Python 3.0+ 中启动 Web HTTP 服务器

我们假设您已经在 Mac 上安装或更新到 Python 3.0+,此命令变体需要 Python 3.0 或更新版本。

在命令行中,准确输入以下语法*:

python -m http.server

或(取决于 Python 3.x 的安装和命名方式):

python3 -m http.server

按回车键,Python 3 会立即从执行命令的目录启动一个简单的 HTTP 服务器。

Python 3 中的 http.server 将在终端中运行,如果目录中没有 Web 文件,则会显示目录索引本身。

您可以通过在计算机上的任何网络浏览器中打开以下 URL 来立即进行测试:

http://0.0.0.0:8000

所有网络服务器活动,如访问单个文件、文件夹、目录等,都将实时显示在活动的 Python 终端窗口中,有点像在 Apache 或 Nginx 服务器上拖尾网络日志。

* 重要说明:如果同时安装了 python 和 python3,则可能需要稍微更改语法以引用 python3 和 python2 或其他 python 版本。这将取决于您如何在 Mac 上更新到 Python 3,但一个常见的例子是改用“python3”命令:

python3 -m http.server

和以前一样,按回车键,活动目录将变成一个网络服务器。

带有 HTTP 的 python3 简单 Web 服务器

python-m CGIHTTPServer 的 Python3 等价物是什么?

另一个常见的技巧是使用 Python 中的 CGI(通用网关接口)服务器,用于 python 或 perl 中的 CGI 脚本。因此,如果您需要为 CGI 运行相当于“python -m CGIHTTPServer”命令的 python3,如下所示:

python3 -m http.server --cgi

或者,如果安装了 Python 3 并将其命名为 python,则命令将简单地为:

python -m http.server --cgi

无论哪种方式,您都需要 –cgi 标志来在 Python 3 中启动 CGI HTTP 服务器。

我收到一条错误消息“/usr/bin/python:没有名为 http 的模块”,现在怎么办?

如果您在尝试执行 python -m http.server 命令字符串时看到“/usr/bin/python: No module named http”错误,那么您很可能没有运行 Python 3,或者您使用的是错误的python3 的命令(即 python 与 python3,取决于版本的命名方式以及它在 Mac 上的安装或更新方式)。也有可能计算机上根本没有安装 Python,不过对于 Mac 来说这种可能性较小,因为 Mac OS 上默认安装了 Python2,不过用户必须在 Mac 上手动安装更新的 Python 3.x,同时保留原始版本Python 2.x 发布版本。通常这是通过 Homebrew 实现的。

更改上述语法,或者如果您使用的是较早的 Python 版本,请尝试“python -m SimpleHTTPServer” 来自 Python 2 及之前版本的命令。

当然,python 简单网络服务器并不适合生产环境,它们实际上最适合快速暂存器或测试环境。如果你想运行一个面向公众或一般来说更健壮的 Web 服务器,你会想要使用 Apache 或 Nginx 之类的东西,尽管在 Mac 上单独配置它们需要一些设置。 Mac 上完整 Web 服务器环境的一个更简单的选择是使用 MAMP,这使得在 Mac 上设置和启动完整的 Apache、MySQL、PHP 环境变得非常简单。

你知道任何其他有趣的 Python 提示或技巧吗?你知道任何其他有用的 python 命令字符串来启动 http 服务器或其他吗?在下面的评论中与我们分享!