Pet*_*rin 1609

来自文档:

SimpleHTTPServer模块已合并到http.serverPython 3.0中.将源转换为3.0时,2to3工具将自动调整导入.

所以,你的命令是python -m http.server.

  • 在Python 3.3中,`python -m CGIHTTPServer`的替换是`python3 -m http.server --cgi`. (84认同)
  • `python -m http.server`为我工作.我不得不删除`3` (26认同)
  • 当然,只需在命令行的末尾添加即可.读取所有args和选项的`python3 -m http.server --help`. (15认同)
  • @nueverest这取决于你的Python安装如何"命名".通常Python2可以作为`python`使用,Python3可以作为`python3`使用,但有些人更喜欢将Python3简单地安装为`python`. (13认同)
  • AFAIK,在Windows上,它默认安装为`python`.但是,问题是`python3` :) (3认同)

Gre*_*ill 248

相当于:

python3 -m http.server
Run Code Online (Sandbox Code Playgroud)

  • 和`python3 -m http.server 8080`如果你需要绑定到一个端口.阅读更多内容:https://docs.python.org/3/library/http.server.html#http.server.SimpleHTTPRequestHandler (41认同)
  • 默认情况下,它将绑定到端口8000。有关详细信息,请参见`python3 -m http.server --help`。 (3认同)

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通信的标准端口.


Shi*_*pat 11

只是想添加对我有用的内容:( python3 -m http.server 8000您可以在此处使用任何端口号,除了当前正在使用的端口号)


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。


ana*_*thi 7

正如每个人都提到的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中引入了目录绑定