とっと
今回は、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に関連するsdl2とglewという2つのライブラリが見つからない!と言っています。
sdl2とglewのライブラリのインストール先を修正
まずはpip listコマンドで、インストールされているPythonライブラリを確認します。
ちゃんとsdl2とglewはインストールされているようです。
問題は、インストール先です。
わたしの場合、以下のフォルダに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コマンドでsdl2とglewがインストールされるフォルダと、Pyinstallerでビルドするときに参照するフォルダとが違うことが、原因のようでした。
とっと
以上になります!