今回は、exeをGitHubに上げる前に、いくつか調整しておきます。
exe化の変更
- Pyinstaller生成物フォルダを変更
pyinstallerフォルダを作って、その中にbuildとdistのフォルダを生成するようにしました。 - アプリのアイコン追加
--icon
のオプションで指定可能。
お絵描きソフト(よく使っているdrawio)で適当なアイコンを作り、iconフォルダを作ってそこに配置しました。
pngデータでいけました。
フォルダ構成
(アプリルート) ├─ harupan.py ├─ data │ ├─ harupan_svm_220412.dat │ └─ templates2021.json ├─ pyinstaller │ ├─ build │ │ └─ harupan │ │ └─ 中間生成物色々 │ ├─ dist │ │ └─ harupan.exe (`--onefile`オプション指定時) │ └─ harupan.spec ├─ icon │ └─ harupan_icon4.png ...
Pyinstaller実行時の引数は以下のようになります。
pyinstaller harupan.py --distpath pyinstaller/dist --workpath pyinstaller/build --specpath pyinstaller --add-data ..\data\harupan_svm_220412.dat;data --add-data ..\data\templates2021.json;data --noconsole --onefile --icon ..\icon\harupan_icon4.png
生成されたexeの見た目。
その他変更
- Pyinstallerでexe生成するコマンドをPowerShellスクリプト化
今までコマンドプロンプトしか使ってきませんでしたが、試しにPowerShellを一度使ってみようかなと。 - pipでの環境再構築用にrequirements.txtを生成
PowerShellスクリプト化
まず、PowerShellでAnacondaを使う場合は、下記サイトに書かれている手順が必要でした。
【Python】PowerShellでAnacondaを使えるようにする | Hisuiblog
作成したPowerShellスクリプト(harupan_pyinstaller.ps1)の中身は以下の通りです。
Param([String]$Arg1 = "dist") pyinstaller harupan.py --distpath pyinstaller/$Arg1 --workpath pyinstaller/build --specpath pyinstaller --add-data "..\data\harupan_svm_220412.dat;data" --add-data "..\data\templates2021.json;data" --noconsole --onefile --icon ..\icon\harupan_icon4.png
引数でexe生成フォルダ名を指定できるようにしました。
PowerShellでのスクリプト引数の使い方参考:
PowerShell で引数を受け取る | マイクロソフ党ブログ
requirements.txt生成
Python環境の再現用に、requirements.txtを生成しました。
pip freeze > requirements.txt
でできそうでしたが、"@ file:"というのが出てしまうことがあり、この場合、環境再現ができませんでした。
生成されたrequirements.txt :
altgraph==0.17.3 certifi @ file:///C:/b/abs_85o_6fm0se/croot/certifi_1671487778835/work/certifi distlib==0.3.6 filelock==3.12.0 importlib-metadata==6.5.0 numpy==1.21.6 opencv-python==4.7.0.72 ordered-set==4.1.0 pefile==2023.2.7 Pillow==9.5.0 platformdirs==3.2.0 pyinstaller==5.10.0 pyinstaller-hooks-contrib==2023.2 pywin32-ctypes==0.2.0 typing_extensions==4.5.0 virtualenv==20.22.0 virtualenv-clone==0.5.7 wincertstore==0.2 zipp==3.15.0 zstandard==0.20.0
下記サイト参考:
pip freezeで上手く出力されない場合(@ file:~~となってしまう場合) - Qiita
このサイトに書かれているように、pip list --format=freeze > requirements.txt
ならうまくいきました。
生成されたrequirements.txt :
altgraph==0.17.3 certifi==2022.12.7 distlib==0.3.6 filelock==3.12.0 importlib-metadata==6.5.0 numpy==1.21.6 opencv-python==4.7.0.72 ordered-set==4.1.0 pefile==2023.2.7 Pillow==9.5.0 pip==22.3.1 platformdirs==3.2.0 pyinstaller==5.10.0 pyinstaller-hooks-contrib==2023.2 pywin32-ctypes==0.2.0 setuptools==67.7.1 typing_extensions==4.5.0 virtualenv==20.22.0 virtualenv-clone==0.5.7 wheel==0.38.4 wincertstore==0.2 zipp==3.15.0 zstandard==0.20.0
下記の手順で環境再構築ができます。
conda create -n test python=3.7 conda activate test pip install -r requirements.txt
ついで
はてなブログでコードブロックを表示するとき、横に長い行が折り返して表示されていたのが気になったので、 スクロールできるように、デザインCSSを変更してみました。
はてなブログでソースコードのブロックに横スクロールバーを表示する方法 - yk5656 diary
以上
次こそGitHubにexeを置いて完了のはず…