Qual é o equivalente em Python 3 de "python -m SimpleHTTPServer"

Respostas:

1775

Dos documentos :

O SimpleHTTPServermódulo foi mesclado http.serverno Python 3.0. A ferramenta 2to3 adaptará automaticamente as importações ao converter suas fontes em 3.0.

Portanto, seu comando é python -m http.serverou, dependendo da sua instalação, pode ser:

python3 -m http.server
Petr Viktorin
fonte
88
No Python 3.3, o substituto para python -m CGIHTTPServeré python3 -m http.server --cgi.
bseibold
17
Claro, basta colocá-lo no final da linha de comando. Leia python3 -m http.server --helptodos os argumentos e opções.
precisa
29
python -m http.servertrabalhou para mim. Eu tive que remover o3
nu everest
14
@nueverest Depende de como sua instalação do Python é 'nomeada'. Normalmente, o Python2 está disponível como pythone Python3 como, python3mas alguns preferem instalar o Python3 simplesmente como python.
Mast
3
AFAIK, no Windows, será instalado pythonpor padrão. Mas, a pergunta é para python3:)
Petr Viktorin
274

O equivalente é:

python3 -m http.server
Greg Hewgill
fonte
46
E python3 -m http.server 8080se você precisar vincular a uma porta. Leia mais no final da seção: docs.python.org/3/library/…
AdamKalisz
4
Por padrão, ele será vinculado à porta 8000. Consulte python3 -m http.server --helppara obter detalhes.
precisa
153

Usando o utilitário 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
shantanoo
fonte
88

Além da resposta de Petr, se você deseja vincular a uma interface específica em vez de todas as interfaces, pode usar -bou --bindsinalizar.

python -m http.server 8000 --bind 127.0.0.1

O trecho acima deve fazer o truque. 8000 é o número da porta. 80 é usado como a porta padrão para comunicações HTTP.

Eswar Yaganti
fonte
python -m http.server 8081 --bind 127.0.0.1 Se o seu 8000 estiver sendo usado por outro programa.
Haris Np
Se você não estiver em um ambiente virtual em que esteja executando o Python3, use python3 -m http.server 8081 --bind 127.0.0.1; caso contrário, você receberá um erro que / usr / bin / python: Nenhum módulo chamado http
Haris Np
7

Em um dos meus projetos, eu executo testes no Python 2 e 3. Para isso, escrevi um pequeno script que inicia um servidor local de forma independente:

$ 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 ...

Como um apelido:

$ 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 ...

Observe que eu controle minha versão do Python por meio de ambientes conda , por isso posso usar em pythonvez de python3usar o Python 3.

Darius M.
fonte