Python 3に相当するものは何python -m SimpleHTTPServer
ですか?
7 に答える
ドキュメントから:
モジュールは
SimpleHTTPServer
Python3.0にマージされhttp.server
ました。2to3ツールは、ソースを3.0に変換するときに、インポートを自動的に適応させます。
したがって、コマンドは次のpython -m http.server
ようになります。または、インストールに応じて、次のようになります。
python3 -m http.server
同等のものは次のとおりです。
python3 -m http.server
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
多くの*nixutilsと同様に、渡される引数が。であるかどうか2to3
を受け入れます。したがって、次のようなファイルを作成せずにテストできます。stdin
-
$ 2to3 - <<< "import SimpleHTTPServer"
-b
Petrの回答に加えて、使用または--bind
フラグを立てることができるすべてのインターフェイスではなく、特定のインターフェイスにバインドする場合。
python -m http.server 8000 --bind 127.0.0.1
上記のスニペットでうまくいくはずです。8000はポート番号です。80はHTTP通信の標準ポートとして使用されます。
誰もが言及しているように、 http.serverモジュールは。と同等python -m SimpleHTTPServer
です。
ただし、 https://docs.python.org/3/library/http.server.html#module-http.server
からの警告として
警告:
http.server
本番環境にはお勧めしません。基本的なセキュリティチェックのみを実装します。
使用法
-m
http.serverは、インタープリターのスイッチを使用して直接呼び出すこともできます。
python -m http.server
上記のコマンドは、デフォルトでポート番号でサーバーを実行します8000
。サーバーの実行中にポート番号を明示的に指定することもできます
python -m http.server 9000
上記のコマンドは、8000ではなくポート9000でHTTPサーバーを実行します。
デフォルトでは、サーバーはそれ自体をすべてのインターフェースにバインドします。オプション-b/-bindは、バインドする特定のアドレスを指定します。IPv4アドレスとIPv6アドレスの両方がサポートされています。たとえば、次のコマンドを実行すると、サーバーはローカルホストにのみバインドされます。
python -m http.server 8000 --bind 127.0.0.1
また
python -m http.server 8000 -b 127.0.0.1
Python 3.8バージョンは、bind引数でIPv6もサポートします。
ディレクトリバインディング
デフォルトでは、サーバーは現在のディレクトリを使用します。このオプション-d/--directory
は、ファイルを提供するディレクトリを指定します。たとえば、次のコマンドは特定のディレクトリを使用します。
python -m http.server --directory /tmp/
ディレクトリバインディングはPython3.7で導入されました
私のプロジェクトの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を使用する代わりに使用できるため、conda環境を介してPythonバージョンを制御していることに注意してください。python
python3
私のために働いたものを追加したかっただけです:(
python3 -m http.server 8000
現在使用されているものを除いて、ここでは任意のポート番号を使用できます)