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.