勉強しないとな~blog

ちゃんと勉強せねば…な電気設計エンジニアです。

OpenCVやってみる - 55. exe化変更、リポジトリ調整

今回は、exeをGitHubに上げる前に、いくつか調整しておきます。

変更点は、GitHubリポジトリに反映しています。

github.com


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の見た目。


その他変更

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を置いて完了のはず…