本ブログはアフィリエイト広告を利用しています。

PyInstallerでPythonプロジェクトをexe化

pyinstaller_install プログラミング

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_install

+マークをクリックし、 “pyinstaller” と入力して検索してパッケージのインストールボタンをクリック

lib-search

exe化手順

  1. コマンドプロンプトを開き、プロジェクトのvenv/Scriptsに移動
  2. 移動後、仮想環境に入る
  3. PJ直下に移動
  4. 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!

以上です。

コメント

タイトルとURLをコピーしました