Kivyコードを含むPythonプログラムをexe化する際の注意点

とっと
とっと

 今回は、Kivyのコードを含んだPythonプログラムのexe化について、わたしがつまづいたところをまとめます。

exe化の際にImportErrorがでてしまう

 pyinstallerを使い、Kivyコードを含むPythonプログラムをexe化をしようとしたところ、こんなエラーがでてうまくいきませんでした。

前略・・・
130 WARNING: stderr:
File "main.spec", line 2, in <module> from kivy.deps import sdl2, glew

131 WARNING: stderr:
from kivy.deps import sdl2, glew
ImportError: cannot import name 'sdl2' from 'kivy.deps'
(C:\Users\xxxxxxxx\AppData\Local\Programs\Python\Python39\lib\site-packages\kivy\deps\__init__.py)

131 WARNING: stderr:
ImportError:
cannot import name 'sdl2' from 'kivy.deps'
(C:\Users\xxxxxxxx\AppData\Local\Programs\Python\Python39\lib\site-packages\kivy\deps\__init__.py)

 このエラーは、Kivyに関連するsdl2glewという2つのライブラリが見つからない!と言っています。

sdl2とglewのライブラリのインストール先を修正

 まずはpip listコマンドで、インストールされているPythonライブラリを確認します。

 ちゃんとsdl2glewはインストールされているようです。

 問題は、インストール先です。

 わたしの場合、以下のフォルダにsdl2フォルダとglewフォルダありました。

C:\Users\xxxxxxxx\AppData\Local\Programs\Python\Python39\Lib\site-packages\kivy_deps

 両フォルダを以下のフォルダにコピーします。

C:\Users\xxxxxxxx\AppData\Local\Programs\Python\Python39\Lib\site-packages\kivy\deps

 再度pyinstallerを使ってexe化をしたら、うまくいきました。

まとめ

 pipコマンドでsdl2glewインストールされるフォルダと、Pyinstallerでビルドするときに参照するフォルダとが違うことが、原因のようでした。

とっと
とっと

以上になります!