ホームページ > バックエンド開発 > Python チュートリアル > Python で「-m」スイッチは何をしますか?

Python で「-m」スイッチは何をしますか?

Barbara Streisand
リリース: 2024-11-29 03:15:10
オリジナル
749 人が閲覧しました

What Does the `-m` Switch Do in Python?

-m スイッチの役割は何ですか?

概要

-m スイッチオプションは Python の機能を拡張し、モジュールの実行と開発における多用途性を可能にします。これは 3 つの主要な役割を果たします:

1. Modulename

python -m によるモジュールの実行Python の代替手段を提供します。モジュールを実行するため。これは、モジュール名をファイル名にマッピングする Python の機能に依存しているため、正確な場所を知らなくてもモジュールを実行するのに便利です。

2.拡張モジュール パス解決

-m を使用すると、現在の作業ディレクトリが sys.path に追加されます。これにより、モジュールを現在のディレクトリからインポートできるようになり、インストールせずにローカル パッケージを実行できるようになります。

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

-m は、モジュールの実行時に絶対インポートと相対インポートの両方を処理します。これにより、開発者は、モジュールがコマンド ラインから実行されるかインポート ステートメントを介して実行されるかに関係なく、同じ方法でインポートを使用できます。

歴史的開発

初期状態では、 - m はトップレベルのモジュール名のみをサポートしていました。 PEP 338 では、サブモジュールと親パッケージの初期化が含まれるように拡張されました。最後に、PEP 366 では、明示的な相対インポートのサポートが導入されました。

ユースケース

-m は、次の 2 つのシナリオで優れています。

  • モジュールの実行不明なファイル名 (標準ライブラリまたはサードパーティなど)
  • インストールせずに絶対または相対インポートを使用してローカル パッケージを実行します (現在のディレクトリを sys.path に追加することで実現します)。

制限事項

-m には 1 つの重大な制限があります。それは、Python コード モジュール (*.py) のみを実行できるということです。 C でコンパイルされたコード モジュールは、-m を使用すると正常に実行されません。

他のモジュール実行メソッドとの比較

'__main__'
実行メソッド sys.path 変更
Execution Method sys.path Modification name Setting package Setting init Evaluation main Evaluation
Import Statement No change Absolute modulename Parent package Yes (packages only) No (packages only)
Command Line with Filename Final directory of filename '__main__' None No (all modules) Yes (package modules)
Command Line with Modulename (-m) Current directory '__main__' Parent package Yes (packages only) Yes (package modules)
name設定
パッケージ 設定 init 評価 main 評価
インポート ステートメント 変更なし 絶対modulename 親パッケージ はい (パッケージのみ) いいえ (パッケージのみ)
コマンド ラインファイル名付き ファイル名の最終ディレクトリ '__main__' なし いいえ (すべてmodules) はい (パッケージ モジュール)
モジュール名 (-m) を指定したコマンド ライン 現在のディレクトリ親パッケージ はい (パッケージのみ) はい (パッケージモジュール)

結論

-m スイッチにより、開発者はモジュールの実行と開発のための多用途ツールを利用できるようになります。モジュール検索の柔軟性を提供し、動的なパス解決をサポートし、複雑な Python コードのシームレスな実行を容易にします。

以上がPython で「-m」スイッチは何をしますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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