【PyInstaller】Pythonプログラムをexe化する【py2exe】

以前に文字認識をするPythonプログラムを作成しました。

これにGUIを実装して、PCオンチの私の奥さんに使ってもらおうと思ったのですが、pyファイルを実行してもらうのはなかなか厳しいです…

そこでプログラムを実行ファイルにして簡単に使えるようにしました。
本記事はその一連の手順をメモしたものです。

スポンサーリンク

作業環境

  • Windows10
  • Anaconda 4.10(scoopでインストール)
  • Python 3.8

実行ファイル(.exe)への変換

調べてみるとpyファイルをexeに変換するには、PyInstallerpy2exeのいずれかを使うようです。

それぞれの特徴は以下の通りです。

メリットデメリット
PyInstaller簡単・安定実行ファイルの容量が大きい
動作が重い
py2exe実行ファイルの容量が小さい
動作が軽い
作業が煩雑

ひとまず簡単ということなので、PyInstallerを使用します。

PyInstallerを使ってみる

PyInstallerについては以下のサイトを参考にしました。

【簡単】Pythonプログラムをexe化する方法を紹介
今回は、Pythonのプログラムファイルをexe化する方法を紹介します。exe化には、PyInstallerというライブラリを使用します。簡単にexeファイルを作成できますが、ファイルサイズの肥大化には注意が必要です。今回は、その注意点についても解説しました。

上記サイトにも書いてありますが、anacondaで不要なモジュールを入れていると、ファイルが肥大化しやすいです。

今回は不要なモジュールが入らないように、イチから環境を構築しなおしてexe化しました。
しかし、出来上がったファイルは250MBオーバー…

手間をかけるなら最初からpy2exeを使えばよかったかもしれません。

エラーへの対処

PyInstallerでexe化しただけでは、プログラムが起動しませんでした。

以下2つのエラーが出ていました。

Tesseract を使用している場合に出るエラー

Tesseractを使用している場合、変換したexeを実行すると、下記サイトにあるようにエラーが発生します。

pyocr を使っていて pyinstaller でパッケージングすると WARNING が出てくる件について - Qiita
はじめに こんにちは、はじめまして、おやすみなさい。へおんです。 この記事で得られる情報は下記の通りです pyocr を使っていて pyinstaller でパッケージングすると出てくるWARNINGを消す tessera...

exe化するときにtesseract関連のデータが足りないようですね…

上記サイトを見て、tesseract.exeと.traineddataさえあればいいのかなと思って試してみましたが、エラーは出たままでした。

結局、私の環境では「(環境名)\Libraty\bin」を丸々コピーしてexe化したら、エラーが消えました。
何が必要だったのか正確にはわからずじまいです…

Qtに関するエラー

PyQt(PySide)を使用している場合、下記サイトの3つ目のエラーが発生するようです。

PyInstallerインストール時・実行時のエラーについて - Qiita
PyInstallerとは  PyInstallerは、作成したPythonスクリプト(.py)を実行ファイル(.exe)に変換することができる優れものツールです。実際に私が経験した実用例としては、 『共同研究先(Python環...

これはサイトに書かれている通り、(環境名)\Libraty\plugins\platforms をdlist内にコピーしたら解決しました。

おわりに

簡単にexe化できるかと思ったら、エラーの対処が大変でした…
出来上がったexeもサイズが大きく、起動も時間がかかり、使い心地は微妙です…

anacondaを使っている場合は実行ファイルが重くなってしまうので、少し大変そうですがpy2exeを使った方が良いと思います。

また、GUIツールでexeにすることを考えるなら、PythonよりもC#などを使えないか検討してみた方が良さそうです。

コメント

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