Qual è l'equivalente di Python 3 di "python -m SimpleHTTPServer"


Risposte:


1776

Dai documenti :

Il SimpleHTTPServermodulo è stato unito in http.serverPython 3.0. Lo strumento 2to3 adatta automaticamente le importazioni quando converti le tue fonti in 3.0.

Quindi, il tuo comando è python -m http.servero, a seconda della tua installazione, può essere:

python3 -m http.server

88
In Python 3.3, la sostituzione python -m CGIHTTPServerè python3 -m http.server --cgi.
bseibold,

17
Certo, attaccalo alla fine della riga di comando. Leggi python3 -m http.server --helpper tutti gli argomenti e le opzioni.
Petr Viktorin,

29
python -m http.serverha funzionato per me. Ho dovuto rimuovere il3
nu everest il

14
@nueverest Dipende da come viene denominata l'installazione di Python. Di solito Python2 è disponibile come pythone Python3 come python3ma alcuni preferiscono installare Python3 semplicemente come python.
Albero

3
AFAIK, su Windows, verrà installato come pythonpredefinito. Ma la domanda è per python3:)
Petr Viktorin,


153

Utilizzo dell'utilità 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

88

Oltre alla risposta di Petr, se si desidera associare un'interfaccia specifica anziché tutte le interfacce che è possibile utilizzare -bo --bindcontrassegnare.

python -m http.server 8000 --bind 127.0.0.1

Lo snippet di cui sopra dovrebbe fare il trucco. 8000 è il numero di porta. 80 viene utilizzato come porta standard per le comunicazioni HTTP.


python -m http.server 8081 --bind 127.0.0.1 Se 8000 viene utilizzato da un altro programma.
Haris Np,

Se non ci si trova in un ambiente virtuale in cui si esegue Python3, utilizzare python3 -m http.server 8081 --bind 127.0.0.1, altrimenti verrà visualizzato un errore che / usr / bin / python: nessun modulo chiamato http
Haris Np

7

In uno dei miei progetti eseguo test su Python 2 e 3. Per questo ho scritto un piccolo script che avvia un server locale in modo indipendente:

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

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

Nota che controllo la mia versione di Python tramite ambienti conda , per questo motivo posso usare pythoninvece di python3usare Python 3.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.