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

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


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

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.


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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.