Pythonをコマンドで実行する時に入力する -m とは何か

コマンドでpythonのモジュールやパッケージを実行する時に、 python -m と付ける理由と、その利用ケースについて紹介します。

2020-04-29

目次

-mなどの-○とは

pythonをコマンドから操作する時に、

python -m pip install --upgrade pip
 python -m venv myVenv

といった操作を見たことがある、したことがあるという方いらっしゃると思います。

この時、間に挟む-mインターフェイスオプション(オプション) と呼ばれるものです。
コマンドラインでpythonを起動する際に付けるオプションということですね。

このオプションには他にも-c-hなど全部で20種類くらいありますが、-m以外はあまり使う機会はありません。


コマンドにてハイフンの後、何かアルファベットを入れて操作する、という指定の仕方はpythonに限った話ではありません。 Node.jsの開発に使うパッケージマネージャのnpmやyarn、またチーム開発に必須となってくるgitなど、コマンド操作においては、オプションとしてほぼ必ず存在します。

では-mってなに?

pythonのモジュール(パッケージ)を実行するために使うオプションです。
使い方は、

python -m <module-name>

と、上記のように-mの後にモジュール(パッケージ)名を入れることで、そのモジュールを実行します。

モジュールとは、pythonの文が入ったファイルのことで、末尾に .py の拡張子が入ったファイルのことです。
すなわち、モジュール名とは、○○○.pyの○○○の部分を指します。
なぜこれをモジュールと呼ぶのかについては別記事で解説します。

モジュールの他に、パッケージも-mを付与して実行します。
パッケージとは複数のモジュールが集めて一つにまとめたファイルのことです。

大小関係を整理すると、以下のようです。

パッケージ > モジュール > クラスや関数

どういう仕組みか

-mの後に続く指定されたモジュールをsys.pathから探し、それを__main__のスクリプトとして実行します。

パッケージの場合は、トップディレクトリにある、__init__ファイルの内容から、__main__のスクリプトを探し実行します。

ここについての詳しい説明は別記事で紹介します。

どんなとき使うの?

よく使われるケースは仮想環境作成のためにコマンドで打ち込む時でしょう。
最初に紹介した、

python -m vev myVenv

と打つと、現ディレクトリにmyVenvという名で仮想環境ファイルが作られます。
仮想環境とは何かについても別記事で紹介します。

また、下記のように使っている方もいらっしゃるかもしれません。
test.pyというpythonファイルが現ディレクトリにあるとき、

python -m test

これは、

python test.py

と同じ操作になります。

おわりに

-mオプションについての解説は以上になります。

自分がpythonを勉強していた最初の頃、-mが急に出てきて何だこれは、となり、ネットで調べてみたのですが直接解説をしているサイトがなく、理解するのに苦労した覚えがあります。

この記事でpythonへの理解が深まってもらえると嬉しい限りです。

最後に、インターフェイスオプションについての公式ドキュメントのリンクを貼っておくので、より深く知りたい方はこちらからご覧ください。

python 公式ドキュメント インターフェイスオプション

All your life with nothing but Happiness
2021 — Misprochef