ざっくり言うと
- PyQt5を用いたGUIアプリケーションをPyInstallerでWindowsのEXE化する際にハマった
- ビルド時にPyQtのパスを指定することで、ビルドが通る
状況
PyQt5を用いてGUIアプリケーションを作成していた。
アプリケーションは、ウインドウにドラッグアンドドロップされたファイルの解析を行い、エクセル形式でファイルを出力するというものである。
配布するために、EXE化しようと思ってPyInstallerを用いたところ、ビルドは成功するが実行できない。
実行時のエラーメッセージは failed to execute script pyi_rth_qt5plugins
環境については、
- Windows 10
- Python (3.5.3)
- future (0.16.0)
- PyInstaller (3.2.1)
- pypiwin32 (219)
- PyQt5 (5.8.1)
- sip (4.19.1)
- XlsxWriter (0.9.6)
対策
pyinstaller
実行時にPyQtのパスを設定する。
例
pyinstaller simple_tool.py --onefile --noconsole -p "C:\Users\ユーザ名\AppData\Local\Programs\Python\Python35-32\Lib\site-packages\PyQt5\Qt\bin"
-p
でsite-packages以下のPyQtライブラリファイルのディレクトリを指定する。
Pythonがインストールされているディレクトリは環境によりけりなので、適宜参照。