質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.59%

Raspberry Pi3b・3b+のどちらかにpython3系でkivyをインストールしたいです

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 2,182

piyotechi

score 15

前提・実現したいこと

Raspberry Piにpython3系でkivyをインストールしたいと思いネットを漁っていたところ、python2系でRaspberry Piにkivyをインストールしているサイトがありました。以下にURLを記載いたします。pip installの部分をpip3に変え、試してみたのですがmakeの部分でエラーがでて詰まっています。また、参考にしたサイトには公式サイトでpython3系での最新のインストール方法が記載されているのですが、python -m pip install --user https://github.com/kivy/kivy/archive/master.zipの部分でエラーが出ます。Raspberry Piは手元にある3b・3b+のどちらかでもインストールしたいです。OSはRaspbianのストレッチを使用しています。解決方法や別のインストール方法をご存じの方、回答よろしくお願いいたします。

参考URL: https://qiita.com/souuuuta/items/233a2e12b442747aa586

発生している問題・エラーメッセージ

python setup.py build_ext --inplace
  File "setup.py", line 1020
    def glob_paths(*patterns, excludes=('.pyc', )):
                                     ^
SyntaxError: invalid syntax
Makefile:35: ターゲット 'build' のレシピで失敗しました
make: *** [build] エラー 1

↓は公式サイトのto install masterの部分のエラー
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-TsluGb-build/

該当のソースコード

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-ttf-dev \
   pkg-config libgl1-mesa-dev libgles2-mesa-dev \
   python-setuptools libgstreamer1.0-dev git-core \
   gstreamer1.0-plugins-{bad,base,good,ugly} \
   gstreamer1.0-{omx,alsa} python-dev libmtdev-dev \
   xclip xsel
sudo pip install -U Cython==0.25.2
git clone https://github.com/kivy/kivy
cd kivy
make
echo "export PYTHONPATH=$(pwd):\$PYTHONPATH" >> ~/.profile
source ~/.profile

試したこと

参考URLのpipの部分をpip3に置き換え実行

補足情報(FW/ツールのバージョンなど)

raspberrypi3b・raspberrypi3b+ ラズビアンストレッチ

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • hayataka2049

    2019/07/16 20:49

    sudo pip install -U Cython==0.25.2
    に失敗するということですか? 実際に打ったコマンドと、エラーの全文(これですべてでなければ)を示していただいた方が良いと思います。

    キャンセル

  • piyotechi

    2019/07/17 08:47

    返信ありがとうございます。記載し忘れた部分として、URLのサイトとその原文となる公式サイトの最新版のコード2種類を試してみました。公式のサイトの
    python -m pip install --user https://github.com/kivy/kivy/archive/master.zipの部分でのエラーで詰まっています。エラー文は
    Exception:
    Traceback (most recent call last):
    File "/usr/share/python-wheels/urllib3-1.19.1-py2.py3-none-any.whl/urllib3/contrib/pyopenssl.py", line 417, in wrap_socket
    cnx.do_handshake()
    File "/usr/lib/python3/dist-packages/OpenSSL/SSL.py", line 1426, in do_handshake
    self._raise_ssl_error(self._ssl, result)
    File "/usr/lib/python3/dist-packages/OpenSSL/SSL.py", line 1174, in _raise_ssl_error
    _raise_current_error()
    File "/usr/lib/python3/dist-packages/OpenSSL/_util.py", line 48, in exception_from_error_queue
    raise exception_type(errors)
    OpenSSL.SSL.Error: [('SSL routines', 'tls_process_server_certificate', 'certificate verify failed')]

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File "/usr/share/python-wheels/urllib3-1.19.1-py2.py3-none-any.whl/urllib3/connectionpool.py", line 588, in urlopen
    self._prepare_proxy(conn)
    File "/usr/share/python-wheels/urllib3-1.19.1-py2.py3-none-any.whl/urllib3/connectionpool.py", line 803, in _prepare_proxy
    conn.connect()
    File "/usr/share/python-wheels/urllib3-1.19.1-py2.py3-none-any.whl/urllib3/connection.py", line 323, in connect
    ssl_context=context)
    File "/usr/share/python-wheels/urllib3-1.19.1-py2.py3-none-any.whl/urllib3/util/ssl_.py", line 324, in ssl_wrap_socket
    return context.wrap_socket(sock, server_hostname=server_hostname)
    File "/usr/share/python-wheels/urllib3-1.19.1-py2.py3-none-any.whl/urllib3/contrib/pyopenssl.py", line 424, in wrap_socket
    raise ssl.SSLError('bad handshake: %r' % e)
    ssl.SSLError: ("bad handshake: Error([('SSL routines', 'tls_process_server_certificate', 'certificate verify failed')],)",)

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File "/usr/share/python-wheels/requests-2.12.4-py2.py3-none-any.whl/requests/adapters.py", line 423, in send
    timeout=timeout
    File "/usr/share/python-wheels/urllib3-1.19.1-py2.py3-none-any.whl/urllib3/connectionpool.py", line 624, in urlopen
    raise SSLError(e)
    requests.packages.urllib3.exceptions.SSLError: ("bad handshake: Error([('SSL routines', 'tls_process_server_certificate', 'certificate verify failed')],)",)

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File "/usr/lib/python3/dist-packages/pip/basecommand.py", line 215, in main
    status = self.run(options, args)
    File "/usr/lib/python3/dist-packages/pip/commands/install.py", line 353, in run
    wb.build(autobuilding=True)
    File "/usr/lib/python3/dist-packages/pip/wheel.py", line 749, in build
    self.requirement_set.prepare_files(self.finder)
    File "/usr/lib/python3/dist-packages/pip/req/req_set.py", line 380, in prepare_files
    ignore_dependencies=self.ignore_dependencies))
    File "/usr/lib/python3/dist-packages/pip/req/req_set.py", line 620, in _prepare_file
    session=self.session, hashes=hashes)
    File "/usr/lib/python3/dist-packages/pip/download.py", line 821, in unpack_url
    hashes=hashes
    File "/usr/lib/python3/dist-packages/pip/download.py", line 659, in unpack_http_url
    hashes)
    File "/usr/lib/python3/dist-packages/pip/download.py", line 853, in _download_http_url
    stream=True,
    File "/usr/share/python-wheels/requests-2.12.4-py2.py3-none-any.whl/requests/sessions.py", line 501, in get
    return self.request('GET', url, **kwargs)
    File "/usr/lib/python3/dist-packages/pip/download.py", line 386, in request
    return super(PipSession, self).request(method, url, *args, **kwargs)
    File "/usr/share/python-wheels/requests-2.12.4-py2.py3-none-any.whl/requests/sessions.py", line 488, in request
    resp = self.send(prep, **send_kwargs)
    File "/usr/share/python-wheels/requests-2.12.4-py2.py3-none-any.whl/requests/sessions.py", line 609, in send
    r = adapter.send(request, **kwargs)
    File "/usr/share/python-wheels/CacheControl-0.11.7-py2.py3-none-any.whl/cachecontrol/adapter.py", line 47, in send
    resp = super(CacheControlAdapter, self).send(request, **kw)
    File "/usr/share/python-wheels/requests-2.12.4-py2.py3-none-any.whl/requests/adapters.py", line 497, in send
    raise SSLError(e, request=request)
    requests.exceptions.SSLError: ("bad handshake: Error([('SSL routines', 'tls_process_server_certificate', 'certificate verify failed')],)",)
    になります。よろしくお願いいたします。
    以下、公式サイトのコード
    Install the dependencies:

    sudo apt update
    sudo apt install libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-ttf-dev \
    pkg-config libgl1-mesa-dev libgles2-mesa-dev \
    python-setuptools libgstreamer1.0-dev git-core \
    gstreamer1.0-plugins-{bad,base,good,ugly} \
    gstreamer1.0-{omx,alsa} python-dev libmtdev-dev \
    xclip xsel libjpeg-dev
    Install pip dependencies:

    python -m pip install --upgrade --user pip setuptools
    python -m pip install --upgrade --user Cython==0.29.10 pillow
    Install Kivy to Python globally

    You can install it like a normal python package with:

    # to get the last release from pypi
    python -m pip install --user kivy

    # to install master
    python -m pip install --user https://github.com/kivy/kivy/archive/master.zip

    # or clone locally then pip install
    git clone https://github.com/kivy/kivy
    cd kivy
    python -m pip install --user .
    Or build and use kivy inplace in a editable install (best for development):

    git clone https://github.com/kivy/kivy
    cd kivy

    python -m pip install --user -e .
    # every time you change any cython files remember to manually call:
    make
    # or to recompile all files
    make force

    キャンセル

回答 2

checkベストアンサー

+3

yuckaさん、

公式サイトのインストラクション、Installation on Raspberry Pi を見ると、
https://kivy.org/doc/stable/installation/installation-rpi.html

In the following instructions, for Python 3, replace python with python3.
(グーグル翻訳)次の手順では、Python 3の場合、pythonpython3に置き換えます。

と最初の方に書かれているので、Python3を使うのであれば、python ...と書いてあるところは、python3 ...で実行します。あと、
# to install master python3 -m pip install --user https://github.com/kivy/kivy/archive/master.zip
をやると、2.0.0.dev0という開発版インストールしようとするので、現在の最新リリースの1.11.1を指定して入れるようにします。

https://kivy.org/doc/stable/installation/deps-cython.html?highlight=kivy%20version にWorking versionsというCythonとKivyの組み合わせが書いてあるので合わせます。

まとめると、こんな感じでしょうか。↓を全部コピペしてみてください。

sudo apt update && \
sudo apt install -y libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-ttf-dev \
   pkg-config libgl1-mesa-dev libgles2-mesa-dev \
   python-setuptools libgstreamer1.0-dev git-core \
   gstreamer1.0-plugins-{bad,base,good,ugly} \
   gstreamer1.0-{omx,alsa} python-dev libmtdev-dev \
   xclip xsel libjpeg-dev && \
python3 -m pip install --upgrade --user pip setuptools && \
python3 -m pip install --upgrade --user Cython==0.29.9 pillow && \
python3 -m pip install --user https://codeload.github.com/kivy/kivy/zip/1.11.1

テストとして、KIVY_WINDOW='sdl2' python3 -c 'from kivy.app import App; App().run()'で、Windowが出てくるか、試してみてください。


確認できたのは、ラズパイ3B とStretchの環境ではないですが...

  • 実行例 (Raspberry Pi 4B(2GB) + 2019-07-10-raspbian-buster.img)
pi@raspberrypi:~ $ KIVY_WINDOW='sdl2' python3 -c 'from kivy.app import App; App().run()'
[INFO   ] [Logger      ] Record log in /home/pi/.kivy/logs/kivy_19-07-17_24.txt
[INFO   ] [Kivy        ] v1.11.1
[INFO   ] [Kivy        ] Installed at "/home/pi/.local/lib/python3.7/site-packages/kivy/__init__.py"
[INFO   ] [Python      ] v3.7.3 (default, Apr  3 2019, 05:39:12) 
[GCC 8.2.0]
[INFO   ] [Python      ] Interpreter at "/usr/bin/python3"
[INFO   ] [Factory     ] 184 symbols loaded
[INFO   ] [Image       ] Providers: img_tex, img_dds, img_sdl2, img_pil, img_gif (img_ffpyplayer ignored)
[INFO   ] [Window      ] Provider: sdl2(['window_egl_rpi'] ignored)
[INFO   ] [GL          ] Using the "OpenGL ES 2" graphics system
[INFO   ] [GL          ] Backend used <sdl2>
[INFO   ] [GL          ] OpenGL version <b'2.1 Mesa 19.1.0-devel'>
[INFO   ] [GL          ] OpenGL vendor <b'Broadcom'>
[INFO   ] [GL          ] OpenGL renderer <b'V3D 4.2'>
[INFO   ] [GL          ] OpenGL parsed version: 2, 1
[INFO   ] [GL          ] Shading version <b'1.20'>
[INFO   ] [GL          ] Texture max size <8192>
[INFO   ] [GL          ] Texture max units <16>
[INFO   ] [Window      ] auto add sdl2 input provider
[INFO   ] [Window      ] virtual keyboard not allowed, single mode, not docked
[INFO   ] [ProbeSysfs  ] device match: /dev/input/event1
[INFO   ] [HIDInput    ] Read event from </dev/input/event1>
[INFO   ] [ProbeSysfs  ] device match: /dev/input/event0
[INFO   ] [HIDInput    ] Read event from </dev/input/event0>
[INFO   ] [Base        ] Start application main loop
[INFO   ] [HIDMotionEvent] using <PixArt Microsoft USB Optical Mouse>
[INFO   ] [HIDMotionEvent] using <Chicony PFU-65 USB Keyboard>
.
.
. (ESCを押して抜ける)
.
.
[INFO   ] [Base        ] Leaving application in progress...
[ERROR  ] [Base        ] No event listeners have been created
[ERROR  ] [Base        ] Application will leave
[INFO   ] [WindowSDL   ] exiting mainloop and closing.
pi@raspberrypi:~ $ 

  • 追記) ラズパイ3B + Stretch環境で確認できました. ただKIVY_WINDOW='sdl2'がないと、画面全体が真っ黒に... raspi-configで、GL Driverをfull KMSにするとよいようです。

pipでシステムフォルダにインストールするには、sudo実行で、--userオプションなし。
sudo -sでrootになり、以下をコピペで、できました。

# rootで実行する.
apt update && \
apt install -y libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-ttf-dev \
   pkg-config libgl1-mesa-dev libgles2-mesa-dev \
   python-setuptools libgstreamer1.0-dev git-core \
   gstreamer1.0-plugins-{bad,base,good,ugly} \
   gstreamer1.0-{omx,alsa} python-dev libmtdev-dev \
   xclip xsel libjpeg-dev && \
python3 -m pip install --upgrade pip setuptools && \
python3 -m pip install --upgrade Cython==0.29.9 pillow && \
python3 -m pip install https://codeload.github.com/kivy/kivy/zip/1.11.1
  • 実行例 (Raspberry Pi 3B + 2019-04-08-raspbian-stretch.imgベースで 2019/7/17にパッケージ更新)
pi@raspberrypi:~ $ python3 -c 'from kivy.app import App; App().run()'
[INFO   ] [Logger      ] Record log in /home/pi/.kivy/logs/kivy_19-07-17_15.txt
[INFO   ] [Kivy        ] v1.11.1
[INFO   ] [Kivy        ] Installed at "/usr/local/lib/python3.5/dist-packages/kivy/__init__.py"
[INFO   ] [Python      ] v3.5.3 (default, Sep 27 2018, 17:25:39) 
[GCC 6.3.0 20170516]
[INFO   ] [Python      ] Interpreter at "/usr/bin/python3"
[INFO   ] [Factory     ] 184 symbols loaded
[INFO   ] [Image       ] Providers: img_tex, img_dds, img_pil, img_gif (img_sdl2, img_ffpyplayer ignored)
[INFO   ] [Window      ] Provider: egl_rpi
[INFO   ] [Window      ] Provider: sdl2(['window_egl_rpi'] ignored)
libGL error: MESA-LOADER: failed to retrieve device information
MESA-LOADER: failed to retrieve device information
MESA-LOADER: failed to retrieve device information
[INFO   ] [GL          ] Using the "OpenGL ES 2" graphics system
[INFO   ] [GL          ] Backend used <sdl2>
[INFO   ] [GL          ] OpenGL version <b'2.1 Mesa 13.0.6'>
[INFO   ] [GL          ] OpenGL vendor <b'Broadcom'>
[INFO   ] [GL          ] OpenGL renderer <b'Gallium 0.4 on VC4 V3D 2.1'>
[INFO   ] [GL          ] OpenGL parsed version: 2, 1
[INFO   ] [GL          ] Shading version <b'1.20'>
[INFO   ] [GL          ] Texture max size <2048>
[INFO   ] [GL          ] Texture max units <16>
[INFO   ] [Window      ] auto add sdl2 input provider
[INFO   ] [Window      ] virtual keyboard not allowed, single mode, not docked
[INFO   ] [ProbeSysfs  ] device match: /dev/input/event3
[INFO   ] [HIDInput    ] Read event from </dev/input/event3>
[INFO   ] [ProbeSysfs  ] device match: /dev/input/event1
[INFO   ] [HIDInput    ] Read event from </dev/input/event1>
[INFO   ] [ProbeSysfs  ] device match: /dev/input/event2
[INFO   ] [HIDInput    ] Read event from </dev/input/event2>
[INFO   ] [ProbeSysfs  ] device match: /dev/input/event0
[INFO   ] [HIDInput    ] Read event from </dev/input/event0>
[INFO   ] [Base        ] Start application main loop
[INFO   ] [HIDMotionEvent] using <2.4G Composite Devic System Control>
[INFO   ] [HIDMotionEvent] using <2.4G Composite Devic Mouse>
[INFO   ] [HIDMotionEvent] using <2.4G Composite Devic Consumer Control>
[INFO   ] [HIDMotionEvent] using <2.4G Composite Devic>
.
. (ESCで抜ける)
.
[INFO   ] [Base        ] Leaving application in progress...
[INFO   ] [WindowSDL   ] exiting mainloop and closing.
pi@raspberrypi:~ $ 

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/07/18 12:01

    返信ありがとうございます。上記の方法でkivyを導入することができました。サンプルの実行結果まで載せて頂き大変わかりやすかったです。

    キャンセル

0

とりあえず、python -m pip install --user https://github.com/kivy/kivy/archive/master.zipの方ならpythonをpython3に変えて実行してみてください。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/07/17 10:06

    pythonをpython3に変え実行した際のエラー分を補足に載せました。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.59%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る