Python で `-m` スイッチを使用する目的と利点は何ですか?

Patricia Arquette
リリース: 2024-11-28 04:27:13
オリジナル
285 人が閲覧しました

What are the purposes and benefits of using the `-m` switch in Python?

-m スイッチの目的は何ですか?

背景: 問題

次の 2 つのコード スニペットを考えてみましょう:

python -m mymod1 mymod2.py args
ログイン後にコピー
python mymod1.py mymod2.py args
ログイン後にコピー

どちらの場合も、mymod1.py が呼び出され、 sys.argv は ['mymod1.py', 'mymod2.py', 'args'] に設定されます。ここで疑問が生じます: -m スイッチの目的は何ですか?

答え: -m の役割

-m スイッチはいくつかの重要な目的を果たします:

  1. コマンド ラインから Python コードを実行: 代わりにモジュール名を指定することで、コマンド ラインから Python コードを実行できます。ファイル名の。これは、モジュール名はわかっているがファイル名がわからない場合、特に標準ライブラリ モジュールやサードパーティ モジュールの場合に便利です。
  2. ディレクトリを sys.path に追加します: Python は、モジュールのファイル名をベースに決定します。 sys.path上にあります。 -m スイッチを使用すると、現在のディレクトリが sys.path に追加され、現在のディレクトリからモジュールをインポートできるようになります。
  3. 相対インポートでコードを実行: コマンドからの相対インポートでモジュールを実行する場合行で、-m スイッチは __package__ 変数を指定されたモジュール名の親モジュールに設定します。これにより、相対インポートが正しく機能するようになります。

使用例

-m スイッチの 2 つの注目すべき使用例は次のとおりです。

  1. 標準の実行ライブラリまたはサードパーティ モジュール: モジュール名はわかっているがファイル名がわからない場合は、-m を使用して実行できます。コマンドラインから実行します (例: python -m http.server.
  2. インポートを含むローカル パッケージの実行: -m を使用すると、絶対インポートまたは相対インポートを含むローカル パッケージを実行できます。インストールします。これは、 pip install -e を使用するのと似ています。開発モード。

詳細な比較

モジュールの実行方法の違いを説明するために、詳細な比較を次に示します。

Import ステートメントによる実行:

  • sys.path は
  • __name__ は絶対モジュール名に設定されます。
  • __package__ は直接の親パッケージに設定されます。
  • __init__.py はすべてのパッケージとコード モジュールに対して評価されます。 .

コマンドライン経由で実行ファイル名:

  • sys.path は、ファイル名の親ディレクトリを含むように変更されます。
  • __name__ は '__main__' に設定されます。
  • __package__ は に設定されますなし。
  • __init__.py は何も評価されません。 package.

モジュール名:

によるコマンドラインによる実行
  • sys.path は現在のディレクトリを含むように変更されます。
  • __name__ は '__main__' に設定されます。
  • __package__ はモジュール名の直接の親パッケージに設定されます。
  • __init__.py はすべてのパッケージとコードに対して評価されますmodule.

結論

-m スイッチは、Python の実行機能を強化する多用途ツールです。これにより、便利なモジュールの実行が可能になり、インポートとコマンドライン実行の機能が組み込まれ、相対インポートによるローカル パッケージの実行が可能になります。

以上がPython で `-m` スイッチを使用する目的と利点は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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