はじめに
pyinstallerを使ってpyファイルのexe化をすると,exeファイルが重たくなってしまうことがある.本記事では,venv(仮想環境用Python標準モジュール) を使った手軽にできるexeファイル軽量化の方法を一つ紹介する.他に簡単な軽量化手段が見つかればその都度更新しようと思う.
環境
- OS: Windows 10
- Python 3.9.5
- Pyinstaller 4.6
- pip 21.3.1
venv(仮想環境)を使う
適当な場所にプロジェクトフォルダMyProject
をつくった後, 以下のようにしてカレントディレクトリを移動させる.
c:\Users\user> cd Desktop\MyProject
この場所に仮想Python環境をつくる.(一般的に.venv
とすることが多い)
c:\Users\user\Desktop\MyProject> python -m venv .venv
MyProject
直下に.venv
が作られ,以下のようなフォルダ構造となる.
MyProject
└─.venv
├─Include
├─Lib
└─Scripts
ここでactivate
することで,仮想環境に入ることができる.
c:\Users\user\Desktop\MyProject .venv\Scripts\activate
そうすると以下のような表示に変わる.
(.venv) C:\Users\user\Desktop\MyProject>
この状態でpip list
すればインストール済みライブラリがまっさらなのがわかる.
ライブラリのインストール
venvを使うことで必要最低限のライブラリのみexeファイルに取り込むことができる.pyinstaller及びexe化したいpyファイル(例えばapp.py
)内でimport
したライブラリをこの仮想環境内にインストールする.
(.venv) C:\Users\user\Desktop\MyProject> pip install pyinstaller
(.venv) C:\Users\user\Desktop\MyProject> pip install numpy
︙
︙
venvを使わなかった場合,PCのpipで管理するライブラリがすべてexeに取り込まれる.
pyinstallerの実行
以下のフォルダ構造になるようにapp.py
を配置する.
MyProject
└─.venv
| ├─Include
| ├─Lib
| └─Scripts
└─ src
└─app.py
以下のコマンドでexeファイルが出来上がる.-F
でexeファイルを一つにまとめ,-w
でexe起動時のコンソール起動をなくす.
(.venv) C:\Users\user\Desktop\MyProject> pyinstaller -F -w src\app.py
仮想環境から出る
deactivate
で仮想環境から出ることができる.出るときは入るときのように,.venv\Scripts\deactivate
とする必要はない.
(.venv) C:\Users\user\Desktop\MyProject> deactivate
C:\Users\user\Desktop\MyProject>
参考文献
venvを詳しく知りたい方は,以下が参考になると思う.特に2つ目は,1つ目(公式ドキュメント)よりわかりやすくまとまっていると思う.
追記履歴
2022-07-30:フォルダ構造を訂正した.pipコマンドなどを使わずに仮想環境フォルダ.venv
を直接書き換えるべきではない.今回参考にしたPython Virtual Environments: A Primerを参考文献に加えた.
2022-08-22:ライブラリのインストールにおいて,「venvを使わなかった場合,ローカルのpipで管理するライブラリがすべてexeに取り込まれる. 」が不適切だった.ローカルからPCとした.どちらかといえば,仮想環境がローカルで,そうでない場合がグローバルと言えるかもしれない.