前置き
この記事はPyinstallerのインストール方法やexe化について説明するものではありません。
Pyinstallerで発生するエラーを"解決するだけ為"の記事になります。
様々なエラーがありますので、早速説明していきたいと思います。
Pyinstallerは複数インストールしている
原因
Pyinstallerが複数の環境にインストールされていると処理が正しく実行されない場合があります。
詳しい原因を調査しましたが、原因は判明しておりません。
解決策
コマンドプロンプト(cmd)を管理者権限で起動してください。
起動したら下記の様に入力してください。
>>where pyinstaller
パスが複数行表示された場合は多数の環境でインストールが行われています。
必要な環境の方だけPyinstallerを残し、他の環境のPyinstallerはpip uninstallでアンインストールしてください。
exeファイルを実行後のエラーが「No such file or directory」
原因
エラー内容は「○○って名前のディレクトリはどこにもないよ」という感じのニュアンスです。
考えられる原因は下記の二つです。
・exeファイルを設置している場所が誤っている
・そもそもディレクトリが無い
解決策
ソースコードを再確認し、パスが誤っていないか確認を行ってください。
また、exe化したPythonファイルと同じ階層にexeファイルを設置し、再度実行してみてください。
exe化時のエラーが 「No module named 〇〇」
原因
エラー内容は「○○って名前のモジュールが見つからないよ!」という感じのニュアンスです。
原因はライブラリの読み込みの失敗だそうです。
解決策
Pyinstaller実行時に生成される○○○.spec(○○○はexe化対象のPythonファイル名)というファイルを開いていただき、
hiddenimports=[],
この文字列を見つけてください。
そしてNo module named ○○というエラー文の○○の文字を
hiddenimports=[’○○’],
と入力してください。同様のエラー文が複数ある場合は、
hiddenimports=[’○○’, '××', '△△'],
と入力してください。
Pythonのリスト型のイメージです。
入力し終えたら上書き保存を行い、cmd等で下記の様に実行してください
pyinstaller 〇〇〇.spec
※〇〇〇はファイル名に置き換えてください。また「--onfile」などのオプションも自由に追加してOKです
exe化時のエラーが 「No module named PyInstaller」
他の記事で作成したのでこちらをご覧ください。
--onefileと--noconsoleの同時使用
原因
--onefile | ライブラリ等をまとめてexeに格納させる
--noconsole | exeファイルの実行時に出てくるコンソール(黒い画面)を非表示にする
Pyinstallerには上記の様な便利なオプションが用意されています。
二つとも便利なので両方使いたいですよね!
しかし、exeファイルの実行時にエラーが発生する場合が稀にあります。
これはPyinstaller特有のバグだそうです。
解決策
Pyinstallerのオプションである上記の2つは同時に入力してはいけません。
どちらかを選んでオプション付けして実行してください。
まとめ
お読み頂きありがとうございました。
私も上記のエラーで1週間は潰したといっても過言ではありません。
他の方のお役に立てたらと思い、記事にしました。
何かご指摘等ございましたら、コメントをお願いいたします!