rya*_*nza 1124 python simplehttpserver httpserver python-3.x
什么是Python 3相当于python -m SimpleHTTPServer?
Pet*_*rin 1609
来自文档:
该
SimpleHTTPServer模块已合并到http.serverPython 3.0中.将源转换为3.0时,2to3工具将自动调整导入.
所以,你的命令是python -m http.server.
Gre*_*ill 248
相当于:
python3 -m http.server
Run Code Online (Sandbox Code Playgroud)
sha*_*noo 146
使用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
Run Code Online (Sandbox Code Playgroud)
Esw*_*nti 70
除了Petr的答案,如果你想绑定到特定的接口而不是所有接口,你可以使用-b/ - bind标志.
python -m http.server 8000 --bind 127.0.0.1
Run Code Online (Sandbox Code Playgroud)
上面的片段应该可以解决问题.8000是端口号.80用作HTTP通信的标准端口.
Dar*_* M. 10
在我的一个项目中,我针对 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 ...
Run Code Online (Sandbox Code Playgroud)
作为别名:
$ 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 ...
Run Code Online (Sandbox Code Playgroud)
请注意,我通过conda 环境控制我的 Python 版本,因为我可以使用python而不是python3使用 Python 3。
正如每个人都提到的http.server模块等效于python -m SimpleHTTPServer.
但作为来自https://docs.python.org/3/library/http.server.html#module-http.server的警告
警告:
http.server不建议用于生产。它只实现基本的安全检查。
http.server 也可以通过-m解释器的开关直接调用。
python -m http.server
Run Code Online (Sandbox Code Playgroud)
上面的命令将默认在端口号上运行服务器8000。您还可以在运行服务器时明确给出端口号
python -m http.server 9000
Run Code Online (Sandbox Code Playgroud)
上面的命令将在端口 9000 而不是 8000 上运行 HTTP 服务器。
默认情况下,服务器将自身绑定到所有接口。选项 -b/--bind 指定它应该绑定到的特定地址。支持 IPv4 和 IPv6 地址。例如,以下命令会导致服务器仅绑定到 localhost:
python -m http.server 8000 --bind 127.0.0.1
Run Code Online (Sandbox Code Playgroud)
或者
python -m http.server 8000 -b 127.0.0.1
Run Code Online (Sandbox Code Playgroud)
Python 3.8 版本在 bind 参数中也支持 IPv6。
默认情况下,服务器使用当前目录。该选项-d/--directory指定它应该向其提供文件的目录。例如,以下命令使用特定目录:
python -m http.server --directory /tmp/
Run Code Online (Sandbox Code Playgroud)
python 3.7中引入了目录绑定