web-dev-qa-db-ja.com

「python -m SimpleHTTPServer」と同等のPython 3とは何ですか

Python 3でpython -m SimpleHTTPServerと同等なものは何ですか?

984
ryanbraganza

ドキュメントから

SimpleHTTPServerモジュールはPython 3.0でhttp.serverにマージされました。 2to3ツールは、ソースを3.0に変換するときに自動的にインポートを調整します。

だから、あなたのコマンドはpython3 -m http.serverです。

1403
Petr Viktorin

同等のものは以下のとおりです。

python3 -m http.server
221
Greg Hewgill

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
136
shantanoo

Petrの答えに加えて、すべてのインターフェースではなく特定のインターフェースにバインドしたい場合は、-b/ - bindフラグを使用できます。

python -m http.server 8000 --bind 127.0.0.1

上記のスニペットはトリックをするべきです。 8000はポート番号です。 HTTP通信用の標準ポートとして80が使用されます。

54
Eswar Yaganti

私のプロジェクトの1つでは、Python 2および3に対するテストを実行しています。そのために、ローカルサーバーを個別に起動する小さなスクリプトを作成しました。

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

エイリアスとして:

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

Python 3を使うのにpython3の代わりにpythonを使うことができるので、私は conda環境 を通して私のPythonバージョンを制御することに注意してください。

4
Darius M.