【3時間でできる】Kivyのインストールからチュートリアルまで|Pythonでデスクトップアプリ

2019-07-11

Pythonでデスクトップアプリを作りたい!!
今回は、PythonのKivyというライブラリを使ってデスクトップアプリを作るまでの過程でハマったことをまとめます。

本当はWEBの技術でUIを作れるElectronを使うつもりだったのですが、完成したアプリケーションのパッケージ化がうまくいかず挫折したため、Kivyに乗り換えました。
Electronに挫折した話はそのうち別の記事で公開しようと思います。

今回のゴールはこちら。

Kivyの環境構築から、公式チュートリアルのPongゲーム作成までの過程をまとめます。
このKivy、環境構築に少し癖はありましたが、なんとインストールしてからたったの数時間でここまで作ることができました。

非常に使いやすいライブラリなので、ぜひ使ってみてください。

もくじ

  1. 環境
  2. 開発環境の構築
  3. チュートリアル実践
  4. まとめ
  5. 参考

環境

環境構築の前に、ざっくり僕の環境を紹介しておきます。

OS:Ubuntu18.10
Python:Python3.7

OSはLinuxですが、Kivyはpipを使ってれたので、WindowsやMacの方でも大きくは変わらないんじゃないかと思います。

開発環境構築

基本的にはこちらのサイトの手順通りにやればいけると思います。

Kivyのインストール

普通にpip install kivyで問題ないのですが、kivyを動かすのに必要なモジュールがいくつかあり、それをきちんと入れないとこんな感じのエラーが返ってきます。

  (twitterWebApi) kashiwaba_yuki@KashiwabaYuki:~/twitterWebApi$ pip install kivy
  Collecting kivy
    Using cached https://files.pythonhosted.org/packages/7d/8b/89d220b7f96dc2662b81319067f679b4cd73cda66f4aa850db5b6c6cfc7a/Kivy-1.10.1.tar.gz
      Complete output from command python setup.py egg_info:
      Using distutils
      
      Cython is missing, it's required for compiling kivy !
      
      
      Traceback (most recent call last):
        File "", line 1, in 
        File "/tmp/pip-install-6czc7lnb/kivy/setup.py", line 232, in 
          from Cython.Distutils import build_ext
      ModuleNotFoundError: No module named 'Cython'
      
      ----------------------------------------
  Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-install-6czc7lnb/kivy/    

Cython、Pygame、Pillowの3つのパッケージが必要みたいです。

こちらのサイトも参考になります。

Python + Kivy 導入してみた

必要なモジュールを揃えたら再チャレンジ。
下のようなログが出れば成功です。

  (twitterWebApi) kashiwaba_yuki@KashiwabaYuki:~/twitterWebApi$ pip install CythonCollecting Cython
  Downloading https://files.pythonhosted.org/packages/25/63/14ded19bc584405b7633a3ba8e2019f2126f214eca2a88b79b2d71e6aae4/Cython-0.29.2-cp37-cp37m-manylinux1_x86_64.whl (2.1MB)
    100% |████████████████████████████████| 2.1MB 3.9MB/s 
Installing collected packages: Cython
Successfully installed Cython-0.29.2
(twitterWebApi) kashiwaba_yuki@KashiwabaYuki:~/twitterWebApi$ pip install kivy
Collecting kivy
  Using cached https://files.pythonhosted.org/packages/7d/8b/89d220b7f96dc2662b81319067f679b4cd73cda66f4aa850db5b6c6cfc7a/Kivy-1.10.1.tar.gz
Collecting Kivy-Garden>=0.1.4 (from kivy)
  Downloading https://files.pythonhosted.org/packages/7d/68/decaee596ff8168a39432eb3949fc7c0be952ebb9467806823bffc165d48/kivy-garden-0.1.4.tar.gz
Collecting docutils (from kivy)
  Downloading https://files.pythonhosted.org/packages/36/fa/08e9e6e0e3cbd1d362c3bbee8d01d0aedb2155c4ac112b19ef3cae8eed8d/docutils-0.14-py3-none-any.whl (543kB)
    100% |████████████████████████████████| 552kB 5.5MB/s 
Collecting pygments (from kivy)
  Downloading https://files.pythonhosted.org/packages/13/e5/6d710c9cf96c31ac82657bcfb441df328b22df8564d58d0c4cd62612674c/Pygments-2.3.1-py2.py3-none-any.whl (849kB)
    100% |████████████████████████████████| 849kB 4.3MB/s 
Collecting requests (from Kivy-Garden>=0.1.4->kivy)
  Downloading https://files.pythonhosted.org/packages/7d/e3/20f3d364d6c8e5d2353c72a67778eb189176f08e873c9900e10c0287b84b/requests-2.21.0-py2.py3-none-any.whl (57kB)
    100% |████████████████████████████████| 61kB 13.1MB/s 
Collecting idna<2.9,>=2.5 (from requests->Kivy-Garden>=0.1.4->kivy)
  Downloading https://files.pythonhosted.org/packages/14/2c/cd551d81dbe15200be1cf41cd03869a46fe7226e7450af7a6545bfc474c9/idna-2.8-py2.py3-none-any.whl (58kB)
    100% |████████████████████████████████| 61kB 17.6MB/s 
Collecting urllib3<1.25,>=1.21.1 (from requests->Kivy-Garden>=0.1.4->kivy)
  Downloading https://files.pythonhosted.org/packages/62/00/ee1d7de624db8ba7090d1226aebefab96a2c71cd5cfa7629d6ad3f61b79e/urllib3-1.24.1-py2.py3-none-any.whl (118kB)
    100% |████████████████████████████████| 122kB 7.9MB/s 
Collecting certifi>=2017.4.17 (from requests->Kivy-Garden>=0.1.4->kivy)
  Using cached https://files.pythonhosted.org/packages/9f/e0/accfc1b56b57e9750eba272e24c4dddeac86852c2bebd1236674d7887e8a/certifi-2018.11.29-py2.py3-none-any.whl
Collecting chardet<3.1.0,>=3.0.2 (from requests->Kivy-Garden>=0.1.4->kivy)
  Downloading https://files.pythonhosted.org/packages/bc/a9/01ffebfb562e4274b6487b4bb1ddec7ca55ec7510b22e4c51f14098443b8/chardet-3.0.4-py2.py3-none-any.whl (133kB)
    100% |████████████████████████████████| 143kB 6.3MB/s 
Building wheels for collected packages: kivy, Kivy-Garden
  Running setup.py bdist_wheel for kivy ... done
  Stored in directory: /home/kashiwaba_yuki/.cache/pip/wheels/34/f6/e9/b788852a1dc5ca691d0173cbbca7dcda2124014192d239cb23
  Running setup.py bdist_wheel for Kivy-Garden ... done
  Stored in directory: /home/kashiwaba_yuki/.cache/pip/wheels/e5/09/36/4bec048252175b6aa7ba75441cbeed8f31a0bea37abedcfed0
Successfully built kivy Kivy-Garden
Installing collected packages: idna, urllib3, certifi, chardet, requests, Kivy-Garden, docutils, pygments, kivy
Successfully installed Kivy-Garden-0.1.4 certifi-2018.11.29 chardet-3.0.4 docutils-0.14 idna-2.8 kivy-1.10.1 pygments-2.3.1 requests-2.21.0 urllib3-1.24.1  

もしどうしてもうまくいかない場合は、一度自分の環境のパッケージを確認してみるといいかもしれません。
コマンドは、pip freeze です。

pythonで現在の環境にインストールされているパッケージの一覧取得

さて、無事に環境構築が終わったらいよいよチュートリアルです。

チュートリアル

Kivyチュートリアルは、日本語化もされてるのでわかりやすいです。

Kivyチュートリアル

最悪ソースコードをコピペすれば、最初に紹介した完成形は出来上がります。

まとめ

環境構築からチュートリアルまでさくっと3時間くらいで終わりました。
Kivyはマルチプラットフォーム対応らしいので、これから色々アプリケーション作っていきたいです。

とりあえず今回の記事はメモ書き程度に、これからオリジナルアプリを作っていく過程なんかをまとめていこうと思います。

参考

Kivyのインストール

Python + Kivy 導入してみた

pythonで現在の環境にインストールされているパッケージの一覧取得

Kivyチュートリアル