ホームページ > バックエンド開発 > Python チュートリアル > Python モジュールを実行するための `python -m` と `python ` の主な違いは何ですか?

Python モジュールを実行するための `python -m` と `python ` の主な違いは何ですか?

Barbara Streisand
リリース: 2024-11-29 22:54:11
オリジナル
946 人が閲覧しました

What are the Key Differences Between `python -m` and `python ` for Executing Python Modules?

コマンドライン Python 実行における "-m" の多面的な役割

一般的に、 python -m mymod1 mymod2.py 引数と python mymod1 が観察されます。 py mymod2.py args コマンドは両方とも、一致する mymod1.py を実行します。 sys.argv。ただし、-m スイッチは、ファイル名からモジュール名への変換を超える、さまざまな追加機能を提供します。

1. Modulenames によるモジュールの実行

-m フラグは、ファイル名ではなくモジュール名を使用してコマンド ラインから Python モジュールを直接呼び出す代替方法として機能します。これは、ファイル名が不明な標準ライブラリ モジュールやサードパーティ パッケージを実行する場合に特に便利です。たとえば、http.server モジュールを実行するには、「python -m http.server.

2」と入力するだけです。 sys.path への統合

-m スイッチを使用すると、モジュールが呼び出されるだけでなく、現在のディレクトリが含まれるように sys.path が変更されます。これは、Python mymod1.py を使用する場合には存在しない機能です。これにより、インストールを必要とせずに、相対インポートを含むローカル パッケージを実行できるようになります。

3.相対インポートのサポート

現在のディレクトリを 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート