什么是 Python 3 的 “python -m SimpleHTTPServer” 等效项

什么是python -m SimpleHTTPServer的 Python 3 等效项?

答案

文档

SimpleHTTPServer模块已合并到 Python 3.0 中的http.server中。将源转换为 3.0 时,2to3 工具将自动适应导入。

因此,您的命令是python -m http.server ,或者取决于您的安装,它可以是:

python3 -m http.server

等效为:

python3 -m http.server

使用 2to3 实用程序。

$ cat try.py
import SimpleHTTPServer

$ 2to3 try.py
RefactoringTool: Skipping implicit fixer: buffer
RefactoringTool: Skipping implicit fixer: idioms
RefactoringTool: Skipping implicit fixer: set_literal
RefactoringTool: Skipping implicit fixer: ws_comma
RefactoringTool: Refactored try.py
--- try.py  (original)
+++ try.py  (refactored)
@@ -1 +1 @@
-import SimpleHTTPServer
+import http.server
RefactoringTool: Files that need to be modified:
RefactoringTool: try.py

除了 Petr 的答案之外,如果要绑定到特定接口而不是所有接口,则可以使用 - b /-bind 标志。

python -m http.server 8000 --bind 127.0.0.1

上面的代码段应该可以解决问题。端口号 8000。 80 用作 HTTP 通信的标准端口。

在我的一个项目中,我针对 Python 2 和 3 运行测试。为此,我编写了一个小脚本来独立启动本地服务器:

$ python -m $(python -c 'import sys; print("http.server" if sys.version_info[:2] > (2,7) else "SimpleHTTPServer")')
Serving HTTP on 0.0.0.0 port 8000 ...

作为别名:

$ alias serve="python -m $(python -c 'import sys; print("http.server" if sys.version_info[:2] > (2,7) else "SimpleHTTPServer")')"
$ serve
Serving HTTP on 0.0.0.0 port 8000 ...

请注意,我通过conda 环境控制我的 Python 版本,因为我可以使用python而不是python3来使用 Python 3。