1. ホーム
  2. パイソン

[解決済み】-mスイッチの目的は何ですか?

2022-04-28 12:26:09

質問

を呼び出すのと何が違うのか、説明してもらえますか?

python -m mymod1 mymod2.py args

python mymod1.py mymod2.py args

どちらのケースでも同じようです mymod1.py が呼び出され sys.argv でございます

['mymod1.py', 'mymod2.py', 'args']

では、どのような -m switch for?

解決方法は?

の最初の行は Rationale セクションの PEP 338 は言う。

Python 2.4 ではコマンドラインスイッチ -m が追加され、Python モジュール名前空間を使用してモジュールを配置し、スクリプトとして実行することができるようになりました。動機となる例は pdb や profile のような標準ライブラリモジュールで、Python 2.4 の実装はこの限られた目的には問題ありません。

つまり、Pythonの検索パスには、カレントディレクトリのファイルだけでなく、どんなモジュールでもこの方法で指定することができるのです。というのは正しいのですが python mymod1.py mymod2.py args も全く同じ効果があります。の最初の行は Scope of this proposal セクションには、次のように記述されています。

Python 2.4 では、-m で指定されたモジュールは、そのファイル名がコマンドラインから提供された場合と同様に実行されます。

とは -m パッケージの一部であるモジュールの操作など、より多くのことが可能になります。PEP 338 の残りの部分はそれに関するものです。詳しくはこちらをご覧ください。