¿Cuál es el equivalente en Python 3 de "python -m SimpleHTTPServer"

Respuestas:

1776

De los documentos :

El SimpleHTTPServermódulo se ha fusionado http.serveren Python 3.0. La herramienta 2to3 adaptará automáticamente las importaciones al convertir sus fuentes a 3.0.

Entonces, su comando es python -m http.server, o dependiendo de su instalación, puede ser:

python3 -m http.server
Petr Viktorin
fuente
88
En Python 3.3, el reemplazo de python -m CGIHTTPServeres python3 -m http.server --cgi.
bseibold
17
Claro, simplemente aplícalo al final de la línea de comando. Lea python3 -m http.server --helppara todos los argumentos y opciones.
Petr Viktorin
29
python -m http.servertrabajó para mi. Tuve que quitar el3
nu everest
14
@nueverest Depende de cómo se 'nombra' su instalación de Python. Por lo general, Python2 está disponible como pythony Python3 como, python3pero algunos prefieren instalar Python3 simplemente como python.
Mástil
3
AFAIK, en Windows, se instalará de manera pythonpredeterminada. Pero, la pregunta es para python3:)
Petr Viktorin
274

El equivalente es:

python3 -m http.server
Greg Hewgill
fuente
47
Y python3 -m http.server 8080si necesitas unirte a un puerto. Lea más al final de la sección: docs.python.org/3/library/…
AdamKalisz
44
Por defecto, se unirá al puerto 8000. Consulte python3 -m http.server --helppara más detalles.
stephenwade
153

Usando la utilidad 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
fuente
88

Además de la respuesta de Petr, si desea vincularse a una interfaz específica en lugar de todas las interfaces que puede usar -bo --bindmarcar.

python -m http.server 8000 --bind 127.0.0.1

El fragmento anterior debería hacer el truco. 8000 es el número de puerto. 80 se utiliza como puerto estándar para las comunicaciones HTTP.

Eswar Yaganti
fuente
python -m http.server 8081 --bind 127.0.0.1 Si su 8000 está siendo utilizado por otro programa.
Haris Np
Si no está en un entorno virtual donde está ejecutando Python3, utilice python3 -m http.server 8081 --bind 127.0.0.1, de lo contrario obtendrá un error que / usr / bin / python: Ningún módulo llamado http
Haris Np
7

En uno de mis proyectos ejecuto pruebas contra Python 2 y 3. Para eso escribí un pequeño script que inicia un servidor local de forma independiente:

$ 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 un alias:

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

Tenga en cuenta que controlo mi versión de Python a través de entornos conda , por eso puedo usar en pythonlugar de python3usar Python 3.

Darius M.
fuente