1500

Python 3に相当するものは何python -m SimpleHTTPServerですか?

4

7 に答える 7

2125

ドキュメントから:

モジュールはSimpleHTTPServerPython3.0にマージされhttp.serverました。2to3ツールは、ソースを3.0に変換するときに、インポートを自動的に適応させます。

したがって、コマンドは次のpython -m http.serverようになります。または、インストールに応じて、次のようになります。

python3 -m http.server
于 2011-10-30T07:28:58.020 に答える
331

同等のものは次のとおりです。

python3 -m http.server
于 2011-10-30T07:27:48.093 に答える
161

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"
于 2013-06-27T19:16:32.913 に答える
113

-bPetrの回答に加えて、使用または--bindフラグを立てることができるすべてのインターフェイスではなく、特定のインターフェイスにバインドする場合。

python -m http.server 8000 --bind 127.0.0.1

上記のスニペットでうまくいくはずです。8000はポート番号です。80はHTTP通信の標準ポートとして使用されます。

于 2017-05-30T15:47:12.073 に答える
22

誰もが言及しているように、 http.serverモジュールは。と同等python -m SimpleHTTPServerです。 ただし、 https://docs.python.org/3/library/http.server.html#module-http.server
からの警告として

警告http.server本番環境にはお勧めしません。基本的なセキュリティチェックのみを実装します。

使用法

-mhttp.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で導入されました

于 2020-10-02T05:01:22.427 に答える
10

私のプロジェクトの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バージョンを制御していることに注意してください。pythonpython3

于 2017-10-05T22:32:20.507 に答える
1

私のために働いたものを追加したかっただけです:( python3 -m http.server 8000現在使用されているものを除いて、ここでは任意のポート番号を使用できます)

于 2022-02-14T11:54:51.797 に答える