Co to jest odpowiednik „python -m SimpleHTTPServer” w Pythonie 3

Odpowiedzi:

1772

Z dokumentów :

SimpleHTTPServerModuł został połączyły się http.serverw Pythonie 3.0. Narzędzie 2to3 automatycznie dostosuje importowanie podczas konwersji źródeł do wersji 3.0.

Tak więc twoje polecenie jest python -m http.server, lub w zależności od instalacji, może być:

python3 -m http.server
Petr Viktorin
źródło
88
W Pythonie 3.3 zamiennikiem python -m CGIHTTPServerjest python3 -m http.server --cgi.
bseibold
17
Jasne, po prostu przypnij go na końcu wiersza poleceń. Przeczytaj python3 -m http.server --helpwszystkie argumenty i opcje.
Petr Viktorin
29
python -m http.serverpracował dla mnie. Musiałem usunąć3
nu everest
14
@nueverest To zależy od tego, jak twoja instalacja w języku Python jest nazywana. Zwykle Python2 jest dostępny jako, pythona Python3 jako, python3ale niektórzy wolą instalować Python3 po prostu jako python.
Maszt
3
AFAIK, w systemie Windows zostanie zainstalowany pythondomyślnie. Ale pytanie dotyczy python3:)
Petr Viktorin
274

Odpowiednikiem jest:

python3 -m http.server
Greg Hewgill
źródło
46
A python3 -m http.server 8080jeśli musisz połączyć się z portem. Czytaj więcej na końcu tego rozdziału: docs.python.org/3/library/…
AdamKalisz
4
Domyślnie nastąpi połączenie z portem 8000. Zobacz python3 -m http.server --helpszczegóły.
stephenwade
153

Korzystanie z narzędzia 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
źródło
87

Oprócz odpowiedzi Petr'a, jeśli chcesz powiązać z określonym interfejsem zamiast ze wszystkimi interfejsami, których możesz użyć -blub --bindoznaczyć.

python -m http.server 8000 --bind 127.0.0.1

Powyższy fragment powinien załatwić sprawę. 8000 to numer portu. 80 jest używany jako standardowy port do komunikacji HTTP.

Eswar Yaganti
źródło
python -m http.server 8081 --bind 127.0.0.1 Jeśli twój 8000 jest używany przez inny program.
Haris Np
Jeśli nie jesteś w środowisku wirtualnym, w którym działasz Python3, użyj python3 -m http.server 8081 --bind 127.0.0.1, w przeciwnym razie pojawi się błąd, że / usr / bin / python: Brak modułu o nazwie http
Haris Np
7

W jednym z moich projektów przeprowadzam testy na Pythonie 2 i 3. W tym celu napisałem mały skrypt, który uruchamia serwer lokalny niezależnie:

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

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

Pamiętaj, że kontroluję moją wersję Pythona za pomocą środowisk conda , dlatego mogę używać pythonzamiast python3Python 3.

Darius M.
źródło