什么是Python 3相当于“python -m SimpleHTTPServer”

时间:2011-10-30 07:22:49

标签: python python-3.x httpserver simplehttpserver

什么是Python 3等效于python -m SimpleHTTPServer

6 个答案:

答案 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中引入了目录绑定