一般的に、 python -m mymod1 mymod2.py 引数と python mymod1 が観察されます。 py mymod2.py args コマンドは両方とも、一致する mymod1.py を実行します。 sys.argv。ただし、-m スイッチは、ファイル名からモジュール名への変換を超える、さまざまな追加機能を提供します。
-m フラグは、ファイル名ではなくモジュール名を使用してコマンド ラインから Python モジュールを直接呼び出す代替方法として機能します。これは、ファイル名が不明な標準ライブラリ モジュールやサードパーティ パッケージを実行する場合に特に便利です。たとえば、http.server モジュールを実行するには、「python -m http.server.
-m スイッチを使用すると、モジュールが呼び出されるだけでなく、現在のディレクトリが含まれるように sys.path が変更されます。これは、Python mymod1.py を使用する場合には存在しない機能です。これにより、インストールを必要とせずに、相対インポートを含むローカル パッケージを実行できるようになります。
現在のディレクトリを sys.path に追加することに加えて、-m を使用すると、相対インポートを使用してモジュールを実行できます。これは、__package__ 変数を指定されたモジュール名の親モジュールに設定することで実現され、相対インポートが意図したとおりに機能できるようになります。
3 つの間の違いを説明するにはPython モジュールを呼び出す方法については、次の表にキーを示します属性:
Invocation Method | sys.path Modification | name | package |
---|---|---|---|
import |
None | Absolute form of |
Immediate parent package |
python |
Includes final directory in |
'__main__' | None |
python -m |
Includes current directory | '__main__' | Immediate parent package |
Python の -m スイッチは、単にファイル名をモジュール名に変換するだけではない幅広い機能を提供する多用途ツールです。コマンド ラインからモジュールを実行し、相対インポートを処理し、ローカル パッケージを sys.path に統合するシームレスな方法を提供します。これは、ローカルと外部の両方で Python モジュールを扱う開発者にとって貴重なツールになります。
以上がPython モジュールを実行するための `python -m` と `python ` の主な違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。