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

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


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

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.


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.