1.はじめに
pyinstallerは、スクリプト本体となるhoge.pyを引数に与えると、単体で実行できるファイルを生成します。
自分でPythonスクリプトを作るときは、python -m <モジュール名>で実行する形式で作る事が殆どなので、モジュールタイプでのpyinstallerを適用する覚え書きです。
2.結論
$ pyinstaller <モジュールディレクトリ>/__main__.py -n <すきな実行ファイルの名前> --collect-all <一緒にまとめるパッケージ名>
3.詳細
想定する条件
ディレクトリ構成
hoge
+- hogemod
+- __init__.py
+- __main__.py
+- hogemod.py
これをPythonから実行するときのコマンド
$ pwd hoge $ python -m hogemod
この場合のpyinstallerコマンドの組み立て方
$ pyinstaller hogemod/__main__.py -n hogemod --noconfirm --collect-all hogemod
pyinstallerを実行後は、hoge/distディレクトリの中に、実行ファイルhogemodができています。
| pyinstaller引数 | 意味 |
|---|---|
| -n | 実行ファイル名(指定無しだと__main__になります) |
| --noconfirm | 実行ファイルビルド中に、上書きする・しないの問いあわせなく上書きします |
| --collect-all | 必要なパッケージをかき集めて一緒にまとめてくれます |
補足
複数のパッケージをインポートしている場合の引数指定
hogemod.pyのなかで、いろいろなパッケージをimportしている場合は、--collect-all引数を必要な分だけ追記します。1パッケージに1引数必要です。
$ pyinstaller hogemod/__main__.py -n hogemod --noconfirm --collect-all hogemod --collect-all yaml --collect-all logging --collect-all curses
--collect-allの指定が不足している場合は、生成した実行ファイルを実行時に、エラーで止まるので、そのときに表示されたパッケージを追加指定します。
ビルドオプション
| 引数 | 機能 |
|---|---|
| --onefile | 関連するファイルを1つにまとめてexeファイルを生成 |
| --noconsole | コンソールの黒い画面を抑制 |
ご参考になれば幸いです。