Python の 機械学習アプリや GUI アプリを PyInstaller でパッケージングするメモ


背景

機械学習アプリとか, GUI アプリなどをぺろっと配布したい.
ユーザーに conda 環境作って, pip install して... とかさせるのが面倒だったり, 動作環境(python version など)を固定させたいときなど. 特に Windows でユーザに環境一式そろえたのを提供したいときとか.

PyInstaller でいけました!

方法

PyInstallerでexeファイル化
https://qiita.com/takanorimutoh/items/53bf44d6d5b37190e7d1

PyInstallerによるPythonスクリプトのexe化とエラー対処方法まとめ
https://qiita.com/kunishou/items/b2e8754886107292926d

PyTorchで記述したPythonスクリプトをPyInstallerでexe化
https://qiita.com/noknmgc/items/ea4ff708131a0ff22ef9

ありがとうございます.

基本はとくに何も考えずによろしく変換してくれます.

ttkbootstrap のサンプル

あたりで適当に gui.py を作り, pyinstaller gui.py しました(Windows)

あとは .exe をクリックすれば, python でスクリプト実行したときと同じようにいけます!

Voila!

native binary?

native c module などもパッケージングできるでしょう.
機械学習アプリを販売したりデモ用に提供したいが, 一部はバイナリにしてソースコード見せたくないようなときなど.
(python コード自体も, 難読化というのもあるかもしれません)

注意点

conda 環境でつくっていると, numpy など conda 環境に入っているのがいろいろ一式パッケージングされます.
とくに pytorch 入っているとサイズでかい(4 GB くらいになる)ので注意です! 上記 Qiita 記事にあるように, パッケージング用には別の conda 環境を作るのがよいでしょう.

GPL なのや, dll など一部の再配布時のライセンスに注意が必要かもしれません
(vc runtime dll とか. ライセンス一覧ファイルも自動で作ってくれる機能あるかしらん)