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 | コンソールの黒い画面を抑制 |
ご参考になれば幸いです。