Pyinstallerで実行ファイルを作成した際のエラー一覧(対処法を研究)
前回はPyinstallerを使った実行ファイルの作成方法をまとめました。今回はその際に発生したエラーを整理しました。
<検証環境>
OS:Windows11 64bit(10でも検証済み)
python:3.7
pyinstaller:4.7
※Windows11でもしっかり動いてくれました。
表示されたエラー一覧
エラー①異常に実行ファイルの容量が大きい!
エラーと言っていいかどうかは微妙ですが、まず驚いたのがこれです。実行ファイルは400MBほどになりました。しかもファイルの起動が遅く、ダブルクリックをしてから立ち上がるまで1分ほどかかりました(この辺はプログラムの量やPCスペックに依存すると思います)。
色々調べてみるとconda環境でインストールしたpandasやそれ以外のライブラリが大量に実行ファイル作成時に使われる様子。
一番簡単な方法ですが、新しくpyinstaller用の仮想環境を構築し、必要なライブラリのみを導入する方法で改善しました。
#環境名はご自身で設定してください。
conda create -n 環境名
#仮想環境を有効にします。
activate 環境名
#pipをインストールします。
conda install pip
次は作成した仮想環境に「pipで」ライブラリをインストールします。どうやらpipでインストールすることが重要らしいです。condaだと依存関係のあるライブラリが大量にインストールされてしまうらしいので。私はpandas,pyperclip,pyautoguiを使っていたので、それらを「pip」でインストールしました。
pip install pandas
pip install pyperclip
pip install pyautogui
なお仮想環境の作成については以下のサイトが分かりやすくまとまっていました。
このようにして作成した仮想環境から実行ファイルを作成したところ、容量は76MBほどになりました。起動も20~30秒ほどで起動できました。大幅な改善です!。
エラー②No module named~と表示される
必要なライブラリはすべて導入した気になっていましたが、新しく仮想環境を作った結果、導入が抜けたライブラリがいました。必要なライブラリのインストールが抜けていたのでpipでインストールし、改善しています(今回はpyautoguiが抜けていました)。
pip install pyautogui
エラー③~due to unhandled exception!と表示される
これはpyinstallerの問題というより、.pyファイルのプログラムに例外が発生して処理が止まってしまいました。pyファイルを修正し、再度実行ファイルを作成したところ改善しました。
エラー④ 実行ファイルを起動すると「pyscreeze.PyScreezeException: The Pillow package is required to use this function」と表示される。
pyautoguiのlocateCenterOnScreenメソッドを用いている場合、pillow(画像編集用のライブラリ)がインストールされていないと起きる不具合です。pipでインストールします。新しく仮想環境を作成した場合などは要注意です。
pip install Pillow
結論:皆困っているだな~と実感
いろいろなサイトを拝見して思った率直な感想です。ですがこういったエラーもバグもプログラミングには付き物。これらを一つ一つ解消してこそ良いプログラムができるというものです。
しばらくはpyautoguiとpyinstallerを行ったり来たりしていると思います。何か気づいたことがありましたら追記する予定です。皆さんもエラーを恐れずトライしてみましょう!
なお、pyinstaller の軽量化は重要な課題のようです。下記のサイトも分かりやすかったです。