pythonはじめました kivy

python

以前python のpyxelというゲームエンジンで2Dゲームを作ってみたという記事を書いたのですが、これだとスマホに移植が難しい。そこで、今回はスマホのアプリを作れるGUIライブラリ「kivy」を使ってみよう。というお話です。

こちらは前回のpyxelと違って、日本語の情報も少なくて手間取ってしまいました。同じように悩む方がいそうなのでインストールからサンプルを動かすところまでを書いてみます。

インストールできません!

ここ https://pyky.github.io/kivy-doc-ja/installation/installation-windows.html や、ここ https://algorithm.joho.info/programming/python/kivy-install/ を参考に、インストールしようとするんだけど、コマンドプロンプトに赤い文字が出てきて止まってしまう。なぜなのか・・・ 簡単な話で、kivy公式サイトに python2.7, 3.5~3.7に対応と書いてある。僕のWinPythonは3.8.3だったからダメだったんです。すぐにWinPython3.7.7をダウンロード・・・ kivy入りました!

さらにあとでわかったのですが、Kivy言語にも対応した開発環境VS Codeを使いたいためWinPythonのパッケージの中では、3.7.x.xcodをおすすめします (2020.6.23時点では、3.7系の最新は3.7.7.1cod)

 

サンプル動きません!

さて、kivyをインストールできたのでサンプルプログラムを動かそうとしたら、実行時にコマンドプロンプトに以下のようなログが出た。そして、ウィンドウが開き、「Kivy Fatal Error」以下のようなメッセージが表示され、アプリケーションが終了してしまった。

D:\Documants\WPy64-3771cod\scripts\kivy_examples>python 01_hello_kivy.py
[INFO   ] [Logger      ] Record log in D:\Documants\WPy64-3771cod\settings\.kivy\logs\kivy_20-06-23_5.txt
[INFO   ] [deps        ] Successfully imported "kivy_deps.gstreamer" 0.2.0
[INFO   ] [deps        ] Successfully imported "kivy_deps.glew" 0.2.0
[INFO   ] [deps        ] Successfully imported "kivy_deps.sdl2" 0.2.0
[INFO   ] [Kivy        ] v1.11.1
[INFO   ] [Kivy        ] Installed at "D:\Documants\WPy64-3771cod\python-3.7.7.amd64\lib\site-packages\kivy\__init__.py"
[INFO   ] [Python      ] v3.7.7 (tags/v3.7.7:d7c567b08f, Mar 10 2020, 10:41:24) [MSC v.1900 64 bit (AMD64)]
[INFO   ] [Python      ] Interpreter at "D:\Documants\WPy64-3771cod\python-3.7.7.amd64\python.exe"
[INFO   ] [Factory     ] 184 symbols loaded
[INFO   ] [Image       ] Providers: img_tex, img_dds, img_sdl2, img_pil, img_gif (img_ffpyplayer ignored)
[INFO   ] [Text        ] Provider: sdl2
[INFO   ] [Window      ] Provider: sdl2
[INFO   ] [GL          ] Using the "OpenGL" graphics system
[INFO   ] [GL          ] GLEW initialization succeeded
[INFO   ] [GL          ] No framebuffers extension is supported
[INFO   ] [GL          ] Backend used <glew>
[INFO   ] [GL          ] OpenGL version <b'1.1.0'>
[INFO   ] [GL          ] OpenGL vendor <b'Microsoft Corporation'>
[INFO   ] [GL          ] OpenGL renderer <b'GDI Generic'>
[INFO   ] [GL          ] OpenGL parsed version: 1, 1
[CRITICAL] [GL          ] Minimum required OpenGL version (2.0) NOT found!

OpenGL version detected: 1.1

Version: b'1.1.0'
Vendor: b'Microsoft Corporation'
Renderer: b'GDI Generic'

Try upgrading your graphics drivers and/or your graphics hardware in case of problems.

The application will leave now.

ふむふむ、どうやらOpenGLが古いようですな。 ビデオボードのドライバが古いのか? しかし、デバイスマネージャーから確認しても、「最新です」としか書いてないし、スペックを調べても、OpenGL 3以降に対応してそうだし。。。

いろいろ調べていくと、
ここ https://qiita.com/eleven-junichi2/items/7f38a248f042f4a14ab8 にたどり着いた。 

こいつを参考にして、サンプルプログラムの先頭に
import os
os.environ ['KIVY_GL_BACKEND'] = 'angle_sdl2'

を付けたら、動くようになりました。 長かった。。。

(注意:この方法はWindowsで動作します。
kivyで使用するOpenGLのバックエンドをangle_sdl2に変更します。
angle_sdl2を利用するにはkivy.deps.sdl2とkivy.deps.angleが必要なので、
pipでkivy.deps.sdl2とkivy.deps.angleをインストールします。
python -m pip install kivy.deps.sdl2
python -m pip install kivy.deps.angle

https://qiita.com/eleven-junichi2/items/7f38a248f042f4a14ab8

方法#1
次に、コードの先頭に
import os
os.environ ['KIVY_GL_BACKEND'] = 'angle_sdl2'

と記述すれば実行できます。

https://qiita.com/eleven-junichi2/items/7f38a248f042f4a14ab8

 

まとめ

  • Kivyは3.8未対応なので、3.7までにする
  • Kivy言語にも対応した開発環境VS Codeを使いたいので3.7.x.xcodがおすすめ
  • OpenGL 2.0以上なのに読み込んでくれない場合はOpenGLのバックエンドをangle_sdl2に変更する

 

参考リンク

参考 User’s Guide(翻訳済み) » Installation on Windows(翻訳済み)

Installation on Windows(翻訳済み) — Kivy 1.10.0 ドキュメント

参考 Winpython + kivyのインストール

https://algorithm.joho.info/programming/python/kivy-install/

参考 kivyがopenGL 2.0を読み込んでくれない

KivyでOpenGLが2.0以上なのに認識せず Kivy Fatal Errorになるとき(Windowsのみ) - Qiita
環境 Pythonのバージョン: 3.6.2 Kivyのバージョン: 1.10.0 Windows 10 内容 実行時に↓のようなメッセージが表示され、アプリケーションが終了する Kivy Fatal Error GL...

コメント

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