Quel est l'équivalent Python 3 de «python -m SimpleHTTPServer»

Réponses:

1776

De la documentation :

Le SimpleHTTPServermodule a été fusionné dans http.serverPython 3.0. L'outil 2to3 adaptera automatiquement les importations lors de la conversion de vos sources en 3.0.

Ainsi, votre commande est python -m http.server, ou selon votre installation, elle peut être:

python3 -m http.server
Petr Viktorin
la source
88
Dans Python 3.3, le remplacement de python -m CGIHTTPServerest python3 -m http.server --cgi.
bseibold
17
Bien sûr, il suffit de le clouer à la fin de la ligne de commande. Lisez python3 -m http.server --helppour tous les arguments et options.
Petr Viktorin
29
python -m http.servertravaillé pour moi. J'ai du retirer le3
nu everest
14
@nueverest Cela dépend de la façon dont votre installation Python est «nommée». Habituellement, Python2 est disponible en tant que pythonet Python3 en tant que python3mais certains préfèrent installer Python3 simplement en tant que python.
Mast
3
AFAIK, sur Windows, il s'installera comme juste pythonpar défaut. Mais, la question est pour python3:)
Petr Viktorin
274

L'équivalent est:

python3 -m http.server
Greg Hewgill
la source
47
Et python3 -m http.server 8080si vous devez vous connecter à un port. En savoir plus à la fin de la section: docs.python.org/3/library/…
AdamKalisz
4
Par défaut, il sera lié au port 8000. Voir python3 -m http.server --helppour plus de détails.
stephenwade
153

Utilisation de l'utilitaire 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
la source
88

En plus de la réponse de Petr, si vous souhaitez vous lier à une interface spécifique au lieu de toutes les interfaces, vous pouvez utiliser -bou --bindmarquer.

python -m http.server 8000 --bind 127.0.0.1

L'extrait ci-dessus devrait faire l'affaire. 8000 est le numéro de port. 80 est utilisé comme port standard pour les communications HTTP.

Eswar Yaganti
la source
python -m http.server 8081 --bind 127.0.0.1 Si votre 8000 est utilisé par un autre programme.
Haris Np
Si vous n'êtes pas dans un environnement virtuel où vous exécutez Python3, veuillez utiliser python3 -m http.server 8081 --bind 127.0.0.1, sinon vous obtiendrez une erreur que / usr / bin / python: Aucun module nommé http
Haris Np
7

Dans l'un de mes projets, je lance des tests contre Python 2 et 3. Pour cela, j'ai écrit un petit script qui démarre un serveur local indépendamment:

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

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

Veuillez noter que je contrôle ma version Python via des environnements conda , à cause de cela je peux utiliser pythonau lieu d' python3utiliser Python 3.

Darius M.
la source