PyInstallerを使ってPythonで作成したプログラムのexe化した際のメモです。
環境
- PyCharm
- Python 3.9(Virtualenv)
- pyinstaller 5.1
- Windows 10
プロジェクト構成
プロジェクトの構成は大体こんな感じです。
└─testpj
├─config
│ └─setting.json
├─testpj
│ ├─__init__.py
│ ├─__main__.py
│ ├─XXX.py
│ └─YYY.py
├─data
│ └─data.json
└─venv
Pyinstallerをインストール
PyCharmのメニューから ファイル – 設定 を開く
+マークをクリックし、 “pyinstaller” と入力して検索してパッケージのインストールボタンをクリック
exe化手順
- コマンドプロンプトを開き、プロジェクトのvenv/Scriptsに移動
- 移動後、仮想環境に入る
- PJ直下に移動
- pyinstaller でexeファイル作成
> cd testpj/venv/Scripts > activate.bat > cd ../../ > pyinstaller testpj/__main__.py --onefile --name testpj
上記でexeファイルの作成に成功するとdistフォルダが作成され、その中に –name で指定したファイル名でexeが作成されます。
今回で言うと”testpj.exe”というファイルとなります。
pyinstaller で指定できるオプションは色々あるのでこちらを参考に。
https://pyinstaller.org/en/stable/usage.html
ちなみにconfig、dataフォルダにあるjsonはプログラムから読んでいますが、こちらはexeに含めていません(含めることもできる)。
その為、testpj.exeと同フォルダにconfig、dataフォルダのコピーが必要です。
└─dist
├─testpj.exe
├─config
│ └─setting.json
└─data
└─data.json
ちょっとはまったところ
最初、__init__.pyを作成していなかったのですが、exe実行時に以下のエラーが出ていました(exeファイル作成には成功)。
何でエラーになるのか判明するまでかなり時間かかりました・・・。
>testpj.exe Traceback (most recent call last): File "__main__.py", line 5, in <module> ModuleNotFoundError: No module named 'testpj' [4528] Failed to execute script '__main__' due to unhandled exception!
以上です。
リンク
コメント