【Python】__main__.pyを理解する
__main__.py
とは
Pythonでは__main__.py
というファイルを定義することで,
python -m <MODULE_NAME>
を実行した際の挙動を定義できるようです.
※ -m
オプションはモジュールをスクリプトとして実行するオプション
例えば以下の例を見てみます.
ディレクトリ構造
. ├── mod/ │ ├── __init__.py │ └── __main__.py └── README.md
mod/__main__.py
の中身
if __name__ == "__main__": print("running __main__.py in mod.")
このとき以下を実行すると,__main__.py
の中身が実行されていることが確認できます.
$ python -m mod # もしくは python mod でも良い running __main__.py in mod.
このように,__main__.py
ファイルを指定することで,モジュールをスクリプトとして実行した際の挙動を定義することができます.
使い所
こちらの記事が参考になりました.
unittest
などのようなパッケージでは,unittest
をライブラリとしても,CLIツールとしても使用することが可能です.
このときに,ライブラリとしての挙動とCLIツールとしての挙動を分離するような際に,__main__.py
を定義すると便利とのことでした.