Was ist das Python 3-Äquivalent von "python -m SimpleHTTPServer"?

Antworten:

1774

Aus den Dokumenten :

Das SimpleHTTPServerModul wurde http.serverin Python 3.0 zusammengeführt. Das 2to3-Tool passt Importe automatisch an, wenn Sie Ihre Quellen in 3.0 konvertieren.

Ihr Befehl lautet also python -m http.serveroder abhängig von Ihrer Installation:

python3 -m http.server
Petr Viktorin
quelle
88
In Python 3.3 für den Ersatz python -m CGIHTTPServerist python3 -m http.server --cgi.
Bseibold
17
Sicher, kleben Sie es einfach am Ende der Befehlszeile an. Lesen Sie python3 -m http.server --helpalle Argumente und Optionen.
Petr Viktorin
29
python -m http.serverarbeitete für mich. Ich musste den3
nu everest
14
@nueverest Es hängt davon ab, wie Ihre Python-Installation 'benannt' ist. Normalerweise ist Python2 als pythonund Python3 als verfügbar, python3aber einige bevorzugen es, Python3 einfach als zu installieren python.
Mast
3
AFAIK wird unter Windows pythonstandardmäßig installiert . Aber die Frage ist für python3:)
Petr Viktorin
274

Das Äquivalent ist:

python3 -m http.server
Greg Hewgill
quelle
46
Und python3 -m http.server 8080wenn Sie an einen Port binden müssen. Lesen Sie mehr am Ende des Abschnitts: docs.python.org/3/library/…
AdamKalisz
4
Standardmäßig wird es an Port 8000 gebunden. Weitere python3 -m http.server --helpInformationen finden Sie unter.
Stephenwade
153

Verwenden des Dienstprogramms 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
quelle
88

Zusätzlich zu Petrs Antwort, wenn Sie anstelle aller Schnittstellen, die Sie verwenden -boder --bindkennzeichnen können, an eine bestimmte Schnittstelle binden möchten .

python -m http.server 8000 --bind 127.0.0.1

Das obige Snippet sollte den Trick machen. 8000 ist die Portnummer. 80 wird als Standardport für die HTTP-Kommunikation verwendet.

Eswar Yaganti
quelle
python -m http.server 8081 --bind 127.0.0.1 Wenn Ihr 8000 von einem anderen Programm verwendet wird.
Haris Np
Wenn Sie sich nicht in einer virtuellen Umgebung befinden, in der Sie Python3 ausführen, verwenden Sie bitte python3 -m http.server 8081 --bind 127.0.0.1. Andernfalls wird die Fehlermeldung / usr / bin / python angezeigt: Kein Modul mit dem Namen http
Haris Np
7

In einem meiner Projekte führe ich Tests gegen Python 2 und 3 durch. Dafür habe ich ein kleines Skript geschrieben, das einen lokalen Server unabhängig startet:

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

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

Bitte beachten Sie, dass ich meine Python-Version über Conda-Umgebungen steuere . Aus diesem Grund kann ich Python 3 pythonanstelle von python3Python 3 verwenden.

Darius M.
quelle