-m スイッチの役割は何ですか?
概要
-m スイッチオプションは Python の機能を拡張し、モジュールの実行と開発における多用途性を可能にします。これは 3 つの主要な役割を果たします:
1. Modulename
python -m
2.拡張モジュール パス解決
-m を使用すると、現在の作業ディレクトリが sys.path に追加されます。これにより、モジュールを現在のディレクトリからインポートできるようになり、インストールせずにローカル パッケージを実行できるようになります。
3.相対インポートと絶対インポートのサポート
-m は、モジュールの実行時に絶対インポートと相対インポートの両方を処理します。これにより、開発者は、モジュールがコマンド ラインから実行されるかインポート ステートメントを介して実行されるかに関係なく、同じ方法でインポートを使用できます。
歴史的開発
初期状態では、 - m はトップレベルのモジュール名のみをサポートしていました。 PEP 338 では、サブモジュールと親パッケージの初期化が含まれるように拡張されました。最後に、PEP 366 では、明示的な相対インポートのサポートが導入されました。
ユースケース
-m は、次の 2 つのシナリオで優れています。
制限事項
-m には 1 つの重大な制限があります。それは、Python コード モジュール (*.py) のみを実行できるということです。 C でコンパイルされたコード モジュールは、-m を使用すると正常に実行されません。
他のモジュール実行メソッドとの比較
実行メソッド | sys.path 変更 |
|
パッケージ 設定 | init 評価 | main 評価 | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
インポート ステートメント | 変更なし | 絶対modulename | 親パッケージ | はい (パッケージのみ) | いいえ (パッケージのみ) | ||||||||||||||||||||||||
コマンド ラインファイル名付き | ファイル名の最終ディレクトリ | '__main__' | なし | いいえ (すべてmodules) | はい (パッケージ モジュール) | ||||||||||||||||||||||||
モジュール名 (-m) を指定したコマンド ライン | 現在のディレクトリ | '__main__'親パッケージ | はい (パッケージのみ) | はい (パッケージモジュール) |
結論
-m スイッチにより、開発者はモジュールの実行と開発のための多用途ツールを利用できるようになります。モジュール検索の柔軟性を提供し、動的なパス解決をサポートし、複雑な Python コードのシームレスな実行を容易にします。
以上がPython で「-m」スイッチは何をしますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。