背景
GitHub から配布されていた exe 形式のアプリを一部修正したくなった。
ソースコードを確認するとPythonで書かれておりPyInstaller が使われていた。
そこで自分の環境で再ビルドを試みた。
本アプリはOpen3Dを使用していたので、それも加味した容量削減についても記述する。
やったことと気づき
① conda install でライブラリを揃えてビルド
- Anaconda で新環境を作成し
conda install
を中心にライブラリを揃えた - 以下の問題が発生:
- バッチファイル経由ではビルドできなかった
-
python コマンドで直打ちすればビルド成功
→ conda のラッパー経由だと依存解決やパス指定が微妙に違う?
② pip install でライブラリを揃えてビルド
- Anaconda で新環境を作成し
pip install
のみでライブラリを揃えた - バッチファイルを修正しPython のフルパスを明示 & PyInstaller を呼ぶように変更
- 結果:
- バッチファイル経由でもビルド成功
-
exe 容量が大きく減少(ただしまだ肥大気味)
→ conda より pip の方が依存が軽くビルドサイズに直結
③ Python 3.11 + Open3D 0.18 系にダウングレード
- Python を 3.11 に下げて環境を作り直し、Open3D を 0.18系で固定
- 結果:
- Open3D 0.19 系で必須だった plotly / dash系ライブラリが不要になった
- exeファイルの容量がさらに縮小
→ これ以上はバージョンをさらに下げる必要があると推測
ビルドサイズ比較
環境 | Python / Open3D | install | exe サイズ |
---|---|---|---|
オリジナル | 不明 (2022年が最新) | 不明 | 56,971 KB |
① conda install 環境 | 3.12 / 0.19 系 | conda | 267,102 KB |
② pip install 環境 | 3.12 / 0.19 系 | pip | 119,451 KB |
③ pip + ダウングレード | 3.11 / 0.18 系 | pip | 88,439 KB |
まとめ
- conda install より pip install を使う方が軽量化できる
- バッチファイル経由でビルドするなら python.exeのフルパスを明示すべき
-
ライブラリのバージョンによって依存関係が大きく変わりサイズにも直結する
- 特に Open3D 0.18 系 → plotly/dash 不要
- Open3D 0.19 系 → 依存が増えて exe サイズ肥大
教訓
- Anaconda 環境での PyInstallerビルドは pip主体でライブラリを管理する方が安定 & 軽量
- exe サイズが気になる場合ライブラリのバージョンを一段下げてみるのも有効
- バッチファイルで失敗したら、まずは pythonコマンド直打ち