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

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


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

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.


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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.