みそしりんぐ

現在進行形みそしる

Kivy

いしたーくんにやりませんかって言われて,とりあえず触ってみた感想というか.
触ってみたというよりはほぼインストールしただけですね.とりあえずそこまでの手順です.

Kivy

Open source Python library for rapid development of applications that make use of innovative user interfaces, such as multi-touch apps.
Kivy: Crossplatform Framework for NUI

目次

  1. Python環境構築
    • 必要のないモジュールをアンインストール
      • 入っていたモジュール
      • アンインストール
    • virtualenvで仮想環境
      • インストールと設定
      • 使い方
  2. Kivy導入
    • インストール
  3. Kivyを使ってみる

Python環境構築

といっても,Python自体はHomebrewでもういれてあったので,それからのお話です.
ちなみにPythonのインストールはbrew installしただけ.

必要のないモジュールをアンインストール

グローバルのPythonに何故かモジュールがたくさん入っていたので,とても気になったのでそれらをアンインストールするところから始めることにしました.

入っていたモジュール
  1. Cython==0.20.1
  2. Jinja2==2.7.2
  3. List==1.3.0
  4. MarkupSafe==0.19
  5. PyRSS2Gen==1.1
  6. Pygments==1.6
  7. Sphinx==1.2.2
  8. Twisted==13.2.0
  9. altgraph==0.11
  10. backports.ssl-match-hostname==3.4.0.2
  11. bdist-mpkg==0.5.0
  12. bonjour-py==0.3
  13. cffi==0.8.2
  14. cryptography==0.2.2
  15. docutils==0.11
  16. ipython==1.2.1
  17. macholib==1.6
  18. matplotlib==1.1.1
  19. modulegraph==0.11
  20. nose==1.3.1
  21. numpy==1.8.0
  22. pandas==0.13.1
  23. patsy==0.2.1
  24. pika==0.9.13
  25. pip-tools==0.3.4
  26. py2app==0.8
  27. pyOpenSSL==0.14
  28. pycparser==2.10
  29. pymc==2.3.2
  30. pyparsing==2.0.1
  31. python-dateutil==2.2
  32. pytz==2013.9
  33. pyzmq==14.0.1
  34. readline==6.2.4.1
  35. scikit-learn==0.14.1
  36. scipy==0.13.3
  37. six==1.5.2
  38. statsmodels==0.5.0
  39. stevedore==0.14.1
  40. tornado==3.2
  41. vboxapi==1.0
  42. virtualenv==1.11.4
  43. virtualenv-clone==0.2.4
  44. virtualenvwrapper==4.2
  45. wsgiref==0.1.2
  46. xattr==0.7.4
  47. zope.interface==4.1.0

それにしてもなんでこんなにたくさん入っていたのかは疑問でならないのですが,多分何か使って一括導入したんだろうなと思います.ただ参考にした記事が不明なのでどうやったのかわかりません.

アンインストール

参考:Python - pipでインストールしたモジュールを全て削除 - Qiita

$ pip freeze > piplist.txt
$ sudo pip uninstall -r piplist.txt

virtualenvで仮想環境

グローバルのPythonは2.x系なのですが,3.x系のPython上でKivyを動かしたいなぁと思ったので,仮想環境を用いて実現することにしました.
参考:
homebrew - Mac OS Xで複数バージョンのPythonを利用する(2)利用編 - Qiita
Virtualenvwrapperの導入

インストールと設定
$ pip install virtualenv
$ pip install virtualenvwrapper

.bash_profile

### Virtualenvwrapper
if [ -f /usr/local/bin/virtualenvwrapper.sh ]; then
    export WORKON_HOME=$HOME/.virtualenvs
    source /usr/local/bin/virtualenvwrapper.sh
fi
$ source .bash_profile
使い方

仮想環境を作る(Python3.x系の場合)

$ mkvirtualenv --python=/usr/local/bin/python3 py3

仮想環境に入る

$ workon py3

仮想環境を抜ける

$(py3) deactivate

仮想環境を消す

$ rmvirtualenv py3

Kivy導入

インストール

先ほど作ったpy3という環境にKivyを入れます.
また,CythonとPygameも入れる必要があるようなので,導入します.
参考:Kivy Basics — Kivy 1.8.1-dev documentation

Cython
$(py3) pip install cython
Pygame
$(py3) pip install hg+http://bitbucket.org/pygame/pygame

そしてエラー発生.

"Cannot find command hg"

コマンドみつからないってどういうことですかーって思って検索してみると,同じ状況の人を発見
英語を斜め読みして,とりあえずmercurialというのを入れてみることに.

$(py3) pip install mercurial

そしてpygameをいれてみるも,結果は変わらず.もしかしてグローバルのPythonにいれなきゃだめなのかなと思って,仮想環境を抜けて入れなおしました.

$ pip install mercurial

これで仮想環境にめでたくpygameが入りました.

Kivy

本命をインストールです.

$(py3) pip install kivy

はい問題発生.

"Can't mix strings and bytes in path components"

ん?と思い調べてみると,全く同じ問題に遭遇している人を見つけたので,解決方法をみようと思ったのですが.
Problem installing under Python 3.3.3 (1.8.0) · Issue #1837 · kivy/kivy · GitHub
これ見る限りissueはClosedしてるけど,1.8.0にはこの問題が残っているということだよなあ.

ということで諦めて,しばらくは2.x系Python上でKivyをいじることにしました.普通に.appでインストールするだけ.
公式サイトに詳しいです.

なんというか,その前の段階で色々あったので悔しいです…….

Kivyを使ってみる

Hello world

参考:Kivy Basics — Kivy 1.8.1-dev documentation

import kivy
kivy.require('1.0.6') # replace with your current kivy version !

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

class MyApp(App):

    def build(self):
        return Label(text='Hello world')


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

気になったのは,Hello worldの文字がぼけていたこと.デフォルトでRetina対応とかは,さすがにないんですね…….