exeへのコンパイル方法について

August 10, 2022

GitHubで公開しているKAT_Subtitleをexeに変換するにはpyinstallerを使用する必要があります。

ただ何の工夫もせずにpyinstallerを使用するとコンパイル語の容量が300-800 Mb程度になってしまいます。原因はpyinstallerが不要なライブラリーをexeに梱包してしまうからです。

これの対策として、virtualenvが使えます。

exeへの変換手順

pip install virtualenv #virtualenvのインストール
virtualenv env #仮想環境envの作成 envという名前のフォルダが作成されます。
.\env\Scripts\activate #作成した仮想環境を有効化
pip install fastapi python-osc uvicorn pyinstaller#必要なライブラリをインストール
pyinstaller main.py --onefile --name KAT_Subtitle.exe --icon "icon.ico"  --clean

環境によってはFastAPIがうまく扱えないことがあります。その場合の対策は以下の通りです。

  1. extra-hooksというフォルダを作成し、以下の内容をhooks-uvicorn.pyという名前で保存します。
## extra-hooks/hooks-uvicorn.py
from PyInstaller.utils.hooks import get_package_paths

datas = [(get_package_paths('uvicorn')[1], 'uvicorn')]
  1. pyinstallerを実行する際にadditional-hooks-dir オプションを追加する

具体的には以下のようなコマンドを実行することになります。

pyinstaller --additional-hooks-dir extra-hooks main.py --onefile --name KAT_Subtitle.exe --icon "icon.ico"  --clean

参考資料

python - Reducing size of pyinstaller exe - Stack Overflow

python - Pyinstaller-compiled Uvicorn server does not start correctly - Stack Overflow


Profile picture

Made by Kuretan ,a VRChat player
You can follow me on Twitter