はじめに
Pythonで書いたコードをexe化しようと思い、Pyinstallerを使用すると、エラーが発生してしまいました。解決に時間がかかったので、記録を残しておきます。
問題
PythonのコードにはQRコードの検出のために、pyzbarを使用していました。
from pyzbar.pyzbar import decode
def main(): # 省略コードを書いたmain.pyがあるディレクトリまで移動して、以下のPyinstallerのコマンドを実行。
$ pyinstaller main.py --onedir --cleanすると、.dllが見つからないという以下のエラーが発生しました。

解決方法
上記のPyinstallerのコマンドを実行すると、.specファイルが自動生成されると思います。そのファイルを編集します。
.specファイルをエディタで開き、エラーに記載されているdllを追加。
a = Analysis(
~省略~ binaries=[(r'..\myvenv\Lib\site-packages\pyzbar\libiconv.dll', '.'),(r'..\myvenv\Lib\site-packages\pyzbar\libzbar-64.dll', '.')],
)変更後にターミナルで以下を実行します。
$ pyinstaller main.spec再度、Pyinstallerのコマンドを実行すると、無事にexeファイルを作成することができました。
$ pyinstaller main.py --onedir --cleanおわりに
Pyinstallerで初めてエラーに遭遇し、調べてもなかなか解決できなくて、時間を少しロスしました。
参考
解決のために以下の記事を参考にしました。


