Python 3 中 “python -m SimpleHTTPServer” 的等效命令
Python 3 中 “python -m SimpleHTTPServer” 的等效命令
技术背景
在 Python 2 中,SimpleHTTPServer 模块可以通过 python -m SimpleHTTPServer 命令方便地启动一个简单的 HTTP 服务器。但在 Python 3.0 中,SimpleHTTPServer 模块被合并到了 http.server 模块中。
实现步骤
基本等效命令
在 Python 3 中,等效的命令是 python -m http.server,根据 Python 的安装情况,也可以使用 python3 -m http.server。
使用 2to3 工具
2to3 工具可以在将 Python 2 代码转换为 Python 3 代码时自动调整导入语句。例如:
1 | |
2to3 也可以接受标准输入,无需创建文件,示例如下:
1 | |
绑定特定接口
如果想绑定到特定的接口而不是所有接口,可以使用 -b 或 --bind 标志,例如:
1 | |
上述命令中,8000 是端口号,127.0.0.1 是要绑定的 IP 地址。
指定端口和目录
默认情况下,服务器在 8000 端口启动,也可以显式指定端口号:
1 | |
从 Python 3.7 开始,可以使用 -d 或 --directory 选项指定服务器要服务的目录:
1 | |
兼容 Python 2 和 3 的脚本
如果需要在一个项目中同时兼容 Python 2 和 3 进行测试,可以使用以下脚本:
1 | |
也可以将其设置为别名:
1 | |
核心代码
1 | |
最佳实践
- 在开发和测试环境中使用
http.server可以快速搭建一个简单的 HTTP 服务器。 - 对于生产环境,由于
http.server只实现了基本的安全检查,不建议使用,应考虑使用更专业的 Web 服务器,如 Nginx、Apache 等。
常见问题
端口被占用
如果指定的端口已经被其他程序占用,服务器将无法启动。可以尝试更换端口号。
兼容性问题
在使用 2to3 工具时,可能会遇到一些隐式修复器跳过的情况,但通常不影响主要的导入语句转换。
Python 3 中 “python -m SimpleHTTPServer” 的等效命令
https://119291.xyz/posts/python3-equivalent-of-simplehttpserver/