什么是Python 3等效于python -m SimpleHTTPServer
?
答案 0 :(得分:1428)
来自the docs:
{3.0}中
SimpleHTTPServer
模块已合并到http.server
。将源转换为3.0时,2to3工具将自动调整导入。
所以,你的命令是python3 -m http.server
。
答案 1 :(得分:224)
等效于:
python3 -m http.server
答案 2 :(得分:138)
使用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
答案 3 :(得分:56)
除了Petr的回答,如果你想绑定到特定的接口而不是所有接口,你可以使用-b / - bind flag。
python -m http.server 8000 --bind 127.0.0.1
以上片段应该可以解决问题。 8000是端口号。 80用作HTTP通信的标准端口。
答案 4 :(得分:3)
在我的一个项目中,我针对Python 2和3运行测试。为此,我编写了一个小脚本,独立启动本地服务器:
10-05 15:00:51.057 25152-25152/wegrok.chiaramail.com E/AndroidRuntime: FATAL EXCEPTION: main
Process: wegrok.chiaramail.com, PID: 25152
java.lang.IllegalArgumentException: No view found for id 0x7f0f00b1 (wegrok.chiaramail.com:id/fragment_container) for fragment FindPeopleHelpFragment{c052157 #1 id=0x7f0f00b1}
作为别名:
$ 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 ...
请注意,我通过conda environments控制我的Python版本,因为我可以使用$ 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 ...
代替python
来使用Python 3。
答案 5 :(得分:1)
每个人都提到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
以上命令将默认在端口号8000
上运行服务器。您还可以在运行服务器时明确给出端口号
python -m http.server 9000
以上命令将在端口9000而不是8000上运行HTTP服务器。
默认情况下,服务器将自身绑定到所有接口。选项 -b /-bind指定应该绑定的特定地址。 IPv4和IPv6地址均受支持。例如,以下 命令导致服务器仅绑定到本地主机:
python -m http.server 8000 --bind 127.0.0.1
或
python -m http.server 8000 -b 127.0.0.1
Python 3.8版本的bind参数也支持IPv6。
默认情况下,服务器使用当前目录。选项-d/--directory
指定一个目录,该目录应将文件提供给该目录。例如,以下命令使用特定目录:
python -m http.server --directory /tmp/
在python 3.7中引入了目录绑定