What is the Python 3 equivalent of “python -m SimpleHTTPServer”
python 3与python -m SimpleHTTPServer的等价物是什么?
来自文档:
The SimpleHTTPServer module has been merged into http.server in Python 3.0. The 2to3 tool will automatically adapt imports when converting your sources to 3.0.
所以,你的命令是python3 -m http.server。
- 在python 3.3中,替换python -m CGIHTTPServer的是python3 -m http.server --cgi。
- 你能用这个命令绑定不同的IP/端口吗?我该怎么做?
- 当然可以,只要把它钉在命令行的末尾就行了。阅读python3 -m http.server --help了解所有参数和选项。
- 江户十一〔五〕为我工作。我得把3取下来
- @nueverest取决于您的python安装是如何"命名"的。通常,python2可用作python,python3可用作python3,但有些人喜欢简单地安装python3作为python。
- 在Windows上,默认情况下,它只安装为python。但是,问题是针对python3。
- @中央军委副部长江东一〔12〕号
- 在Raspbian上不适合我:
- python -m http.server在Windows中为我工作。
- python3现在被命名为"python",用于在OSX上进行自制托管安装。
- @cmcdragonkai本节末尾的更多示例:docs.python.org/3/library/…
- 是否可以用PY2X和PY3X兼容的方式调用它?我试过使用six库,但它似乎不适用于:'python-m six.moves.simplehttpserver'
- 刚刚在Windows上安装了python 3.7.1,python和python3都不工作,只是py工作!
- @paramvirsinghkarwal py是Windows上的一个包装器,因为Linux具有这样一个特性:如果一个脚本被标记为可执行,并以"shebang"(在#! /bin/python3中)开头,那么作为一个命令(在./yourscript.py中)执行它将与该程序一起运行,这样您就可以选择在哪个版本下运行脚本,除非有人手动执行EDOCX1。〔20〕。Windows只使用文件扩展名来决定要使用哪个程序,所以py被设置为打开.py文件并查找shebang,然后在正确的python版本下执行它。
- 在拱门上,我有python(python 3)、python2、python2.7、python3和python3.7。例如,如果a有2.6,我也会有一个python2.6。
等效值为:
- 和python3 -m http.server 8080,如果需要绑定到端口。阅读本节末尾的更多内容:docs.python.org/3/library/…
- 默认情况下,它将绑定到端口8000。详见python3 -m http.server --help。
使用2to3实用程序。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| $ 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标志的接口。
1
| python -m http.server 8000 --bind 127.0.0.1 |
上面的代码片段应该可以做到这一点。8000是端口号。80用作HTTP通信的标准端口。
- 在Windows10上使用python 3.6,这是唯一可行的方法。谢谢。
在我的一个项目中,我对python 2和3运行测试。为此,我编写了一个单独启动本地服务器的小脚本:
1 2
| $ 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 ... |
作为别名:
1 2 3
| $ 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。
命令python -m SimpleHTTPServer用于Linux。对Windows使用命令python -m http.server 7777。
- 差异似乎只在端口号中。你能解释一下这是如何依赖操作系统的吗?
- 您可以选择任何端口号,如"8000"等。我想指出命令的区别。
- 这个答案不正确。
- 模块名在python 2(simplehttpserver)和python 3(http.server)之间更改。平台无关。这个回答者可能在两个平台上有不同的Python。
- 命令的区别在于,第一个命令使用python2,而第二个命令使用pyton3。