PythonでKivyアプリを作成すると「ImportError」が出力される

PythonでKivyアプリを作成すると「ImportError」が出力されることについて解説しています。

仮想環境を作成し、Kivyをインストール。インストール後、アプリを作成すると、エラーが出力し、アプリが実行されないので、これを解決してみます。

■Python

今回のPythonのバージョンは、「3.8.5」を使用しています。(Windows10)(pythonランチャーでの確認)

■アプリを作成する

まずはエラーの出力を確認するために、アプリを作成します。

■コード

import kivy
from kivy.app import App
from kivy.uix.label import Label

class MyApp(App):
    def build(self):
        return Label(text="test")

if __name__ == "__main__":
    MyApp().run()

■実行・検証

このスクリプトを「test_001.py」という名前で、Pythonが実行されている作業ディレクトリ(カレントディレクトリ)に保存し、コマンドプロンプトを実行してみます。

C:\Users\user_>kivy_venv\Scripts\activate

実行後、仮想環境を使用しますので、上記のコマンドを入力し、Enterキーを押します。今回の仮想環境の設定については、こちらで設定したものになります。

(kivy_venv) C:\Users\user_>py -3.8 test_001.py

Enterキーを押すと、コマンドプロンプトの先頭に (kivy_venv) と表示され、仮想環境の使用できる状態となりましたので、この状態下でアプリを実行してみます。

[INFO ] [Logger ] Record log in C:\Users\user_\.kivy\logs\kivy_21-10-24_0.txt
[INFO ] [deps ] Successfully imported "kivy_deps.angle" 0.3.0
[INFO ] [deps ] Successfully imported "kivy_deps.glew" 0.3.0
[INFO ] [deps ] Successfully imported "kivy_deps.sdl2" 0.3.1
[INFO ] [Kivy ] v2.0.0
[INFO ] [Kivy ] Installed at "C:\Users\user_\AppData\Roaming\Python\Python38\site-packages\kivy\__init__.py"
[INFO ] [Python ] v3.8.5 (tags/v3.8.5:580fbb0, Jul 20 2020, 15:57:54) [MSC v.1924 64 bit (AMD64)]
[INFO ] [Python ] Interpreter at "C:\Program Files\Python38\python.exe"
[INFO ] [Factory ] 186 symbols loaded
[INFO ] [Image ] Providers: img_tex, img_dds, img_pil (img_sdl2, img_ffpyplayer ignored)
[INFO ] [Text ] Provider: pil(['text_sdl2'] ignored)
[CRITICAL] [Window ] Unable to find any valuable Window provider. Please enable debug logging (e.g. add -d if running from the command line, or change the log level in the config) and re-run your app to identify potential causes
sdl2 - ImportError: DLL load failed while importing _window_sdl2: 指定されたモジュールが見つかりません。
File "C:\Users\user_\AppData\Roaming\Python\Python38\site-packages\kivy\core\__init__.py", line 58, in core_select_lib
mod = __import__(name='{2}.{0}.{1}'.format(
File "C:\Users\user_\AppData\Roaming\Python\Python38\site-packages\kivy\core\window\window_sdl2.py", line 27, in <module>
from kivy.core.window._window_sdl2 import _WindowSDL2Storage

[CRITICAL] [App ] Unable to get a Window, abort.

実行してみると、「ImportError」というエラーが発生し、アプリが実行されず、終了してしまいました。実行されない原因を調べてみると、kivyをインストールするだけでは、アプリは実行できないということが判明し、他のパッケージをインストールしてみます。

pip install docutils pygments pypiwin32 kivy.deps.sdl2

pip install kivy.deps.glew

上記のコマンドを入力し、Enterキーを押します。今回は、Python3.8.5に作成しますので、「py -3.8 -m pip install docutils pygments pypiwin32 kivy.deps.sdl2」、「py -3.8 -m pip install kivy.deps.glew」とします。

Enterキーを押してみましたが、インストールがうまくいかず、失敗しました。次に別のパッケージを試してみます。

python -m pip install docutils pygments pypiwin32 kivy.deps.sdl2kivy.deps.glew
python -m pip install kivy.deps.gstreamer

上記のパッケージも試してみましたが、アプリは実行しませんでした。さらに調べてみると、Windowsへのsdl2依存関係のインストールにはいくつかの問題があるようであり、またPython3.8にKivyをインストールすることはできないという報告もありました。さらには、今回インストールしたKivy2.0.0は不安定で、エラーが発生する可能性があるということも書かれているので、アプリの実行は諦めました。

諦めましたが、別の記事では、Pythonを32bitにすると、問題なく動作しましたという報告もあるので、現在使用しているのが、64bit版のPythonなので、今後、32bit版をインストールし、アプリの実行を行ってみる予定です。

コメント

タイトルとURLをコピーしました