<覚え書き 2>ラズパイでpythonを使いたいけどgattlibインストールでエラー! 超初心者なりにいろいろ試すの巻

パスワード付きのSwitchBotの操作をpythonでできることを知り、ぜひ試したいと思います。ところがラズパイにpythonをインストールすることにさえ悪戦苦闘する超初心者のお話(覚え書き)です。

 

シリーズ化してます( ゚∀゚)アハハ

  1. ドアロック解除! Apple HomeKitとSwitchBotとRaspberry PiとHomeBridgeでキャンピングカーのドアロックを操作するょ!
  2. <覚え書き>ラズパイにhomebridge-config-ui-xを入れるときにエラー! さぁどうする??
  3. <覚え書き>ラズパイでpythonを使いたいけどgattlibインストールでエラー! 超初心者なりにいろいろ試すの巻
  4. <覚え書き>ラズパイ再起動でHomeBridgeを自動起動させるよ!
  5. PySwitchBotもPythonもわかんない! SwitchBotの設定から逃げるの巻!

 

いろんなサイトを見て同じように進めて行きますがエラーが発生します…。

真似してもエラー

“homebridge-config-ui-x”で気をよくしたこともあってpythonでの操作に挑戦です。 参考にできるサイトは多くありますが準備のために必要なインストール方法や内容はほぼ一緒。

まずは現状把握。

pi@simejipi:~ $ lsb_release -a
No LSB modules are available.
Distributor ID:	Raspbian
Description:	Raspbian GNU/Linux 10 (buster)
Release:	10
Codename:	buster

 

実行結果はいろいろ省略していますが内容はすでに最新バージョンがインストール済みとかばっかりです。

pi@simejipi:~ $ sudo apt-get update

pi@simejipi:~ $ sudo apt-get install libbluetooth-dev

pi@simejipi:~ $ sudo pip3 install pybluez
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting pybluez
  Downloading https://www.piwheels.org/simple/pybluez/PyBluez-0.23-cp37-cp37m-linux_armv7l.whl (132kB)
    100% |████████████████████████████████| 133kB 174kB/s 
Installing collected packages: pybluez
Successfully installed pybluez-0.23


pi@simejipi:~ $ sudo apt-get install libboost-python-dev

pi@simejipi:~ $ sudo apt-get install libboost-thread-dev

 

問題発生です。 ”python setup.py egg_info”ってなんだろう。

pi@simejipi:~ $ sudo pip3 install gattlib
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting gattlib
  Downloading https://files.pythonhosted.org/packages/fe/8d/72d539dd6be2d9677864a1604b8db80696c2d5f018cf8093bf442311162f/gattlib-0.20201113.tar.gz (50kB)
    100% |████████████████████████████████| 51kB 695kB/s 
    Complete output from command python setup.py egg_info:
    Package glib-2.0 was not found in the pkg-config search path.
    Perhaps you should add the directory containing `glib-2.0.pc'
    to the PKG_CONFIG_PATH environment variable
    No package 'glib-2.0' found
    Traceback (most recent call last):
      File "", line 1, in 
      File "/tmp/pip-install-_47z2s15/gattlib/setup.py", line 53, in 
        "pkg-config --cflags glib-2.0".split()).decode('utf-8')
      File "/usr/lib/python3.7/subprocess.py", line 395, in check_output
        **kwargs).stdout
      File "/usr/lib/python3.7/subprocess.py", line 487, in run
        output=stdout, stderr=stderr)
    subprocess.CalledProcessError: Command '['pkg-config', '--cflags', 'glib-2.0']' returned non-zero exit status 1.
    
    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-install-_47z2s15/gattlib/

 

※後から気付いたのですが無いと出ている’glib-2.0’は下記で入ったのかも。

sudo apt-get install libperl-dev
sudo apt-get install libgtk2.0-dev

 

広告

 

エラーエラーエラー

最初に試したのはsetuptoolsのアップグレード。 これでは改善されず。

pi@simejipi:~ $ pip install --upgrade pip setuptools
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting pip
  Downloading https://files.pythonhosted.org/packages/27/79/8a850fe3496446ff0d584327ae44e7500daf6764ca1a382d2d02789accf7/pip-20.3.4-py2.py3-none-any.whl (1.5MB)
    100% |████████████████████████████████| 1.5MB 246kB/s 
Collecting setuptools
  Downloading https://files.pythonhosted.org/packages/e1/b7/182161210a13158cd3ccc41ee19aadef54496b74f2817cc147006ec932b4/setuptools-44.1.1-py2.py3-none-any.whl (583kB)
    100% |████████████████████████████████| 583kB 622kB/s 
Installing collected packages: pip, setuptools
Successfully installed pip-20.3.4 setuptools-44.1.1

 
pipとpip3があるっぽいのでインストールします。 ただしこれでは改善されず。

pi@simejipi:~ $ pip3 install --upgrade pip setuptools
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting pip
  Downloading https://files.pythonhosted.org/packages/fe/ef/60d7ba03b5c442309ef42e7d69959f73aacccd0d86008362a681c4698e83/pip-21.0.1-py3-none-any.whl (1.5MB)
    100% |████████████████████████████████| 1.5MB 236kB/s 
Collecting setuptools
  Downloading https://files.pythonhosted.org/packages/0c/12/18eda60a1b961e0248e1b1e3ec1ff417420596dc7edf3614ef58a7a8cf6a/setuptools-54.1.2-py3-none-any.whl (785kB)
    100% |████████████████████████████████| 788kB 543kB/s 
Installing collected packages: pip, setuptools
Successfully installed pip-21.0.1 setuptools-54.1.2

 

“python-host”フォルダにgithubから何かをコピーしてるっぽい。

pi@simejipi:~ $ git clone https://github.com/OpenWonderLabs/python-host.git
Cloning into 'python-host'...
remote: Enumerating objects: 16, done.
remote: Counting objects: 100% (16/16), done.
remote: Compressing objects: 100% (12/12), done.
remote: Total 76 (delta 7), reused 13 (delta 4), pack-reused 60
Unpacking objects: 100% (76/76), done.

 

Not Found Errorとか言われちゃうのでやっぱり何かが足りないみたい。

pi@simejipi:~/python-host $ sudo python3 switchbot_py3.py --help
Traceback (most recent call last):
  File "switchbot_py3.py", line 35, in 
    from bluetooth.ble import DiscoveryService, GATTRequester
  File "/usr/local/lib/python3.7/dist-packages/bluetooth/ble.py", line 1, in 
    from gattlib import *
ModuleNotFoundError: No module named 'gattlib'

 

広告

 

手当たり次第

いろいろ手当たり次第に試しますがすでに最新バージョンがインストール済みなど…。

pi@simejipi:/ $ sudo apt-get install python3-pip libboost-python-dev libboost-thread-dev
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
libboost-python-dev はすでに最新バージョン (1.67.0.1+b1) です。
libboost-thread-dev はすでに最新バージョン (1.67.0.1+b1) です。
python3-pip はすでに最新バージョン (18.1-5+rpt1) です。
アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 0 個。
pi@simejipi:/ $ sudo apt-get install libbluetooth-dev 
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
libbluetooth-dev はすでに最新バージョン (5.50-1.2~deb10u1+rpt2) です。
アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 0 個。
pi@simejipi:/ $ sudo pip3 install pybluez
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Requirement already satisfied: pybluez in /usr/local/lib/python3.7/dist-packages (0.23)

 

なんでも試します。

pi@simejipi:/ $ sudo apt-get install python-dev libbluetooth3-dev
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
注意、'libbluetooth3-dev' の代わりに 'libbluetooth-dev' を選択します
python-dev はすでに最新バージョン (2.7.16-1) です。
python-dev は手動でインストールしたと設定されました。
libbluetooth-dev はすでに最新バージョン (5.50-1.2~deb10u1+rpt2) です。
アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 0 個。

 

pybluez-0.23はインストールできた。

pi@simejipi:/ $ sudo pip install pybluez
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting pybluez
  Downloading https://files.pythonhosted.org/packages/08/9f/e9d93b266d2d1ea988780a52a696073ba0a65df65a532165fdf6ff90d0ed/PyBluez-0.23.tar.gz (97kB)
    100% |████████████████████████████████| 102kB 1.1MB/s 
Building wheels for collected packages: pybluez
  Running setup.py bdist_wheel for pybluez ... done
  Stored in directory: /root/.cache/pip/wheels/c8/09/d3/94417fa65febe1baaa97a7152e6a0a53a446aee33efaf9e6f9
Successfully built pybluez
Installing collected packages: pybluez
Successfully installed pybluez-0.23

 

Gettlibの依存パッケージ?  ”monodoc-gtk3.0-manual”が提案されて2個のパッケージ”libglib3.0-cil”と”libglib3.0-cil-dev”が新たにインストールされるらしい。

pi@simejipi:/ $ sudo apt-get install libglib3.0 libboost-python-dev libboost-thread-dev
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
注意、regex 'libglib3.0' のために 'libglib3.0-cil-dev' を選択します
注意、regex 'libglib3.0' のために 'libglib3.0-cil' を選択します
libboost-python-dev はすでに最新バージョン (1.67.0.1+b1) です。
libboost-thread-dev はすでに最新バージョン (1.67.0.1+b1) です。
提案パッケージ:
  monodoc-gtk3.0-manual
以下のパッケージが新たにインストールされます:
  libglib3.0-cil libglib3.0-cil-dev
アップグレード: 0 個、新規インストール: 2 個、削除: 0 個、保留: 0 個。
95.8 kB のアーカイブを取得する必要があります。
この操作後に追加で 236 kB のディスク容量が消費されます。
続行しますか? [Y/n] Y
取得:1 http://ftp.jaist.ac.jp/pub/Linux/raspbian-archive/raspbian buster/main armhf libglib3.0-cil armhf 2.99.3-3 [72.4 kB]
取得:2 http://ftp.jaist.ac.jp/pub/Linux/raspbian-archive/raspbian buster/main armhf libglib3.0-cil-dev armhf 2.99.3-3 [23.5 kB]
95.8 kB を 2秒 で取得しました (63.6 kB/s)    
以前に未選択のパッケージ libglib3.0-cil を選択しています。
(データベースを読み込んでいます ... 現在 124491 個のファイルとディレクトリがインストールされています。)
.../libglib3.0-cil_2.99.3-3_armhf.deb を展開する準備をしています ...
libglib3.0-cil (2.99.3-3) を展開しています...
以前に未選択のパッケージ libglib3.0-cil-dev を選択しています。
.../libglib3.0-cil-dev_2.99.3-3_armhf.deb を展開する準備をしています ...
libglib3.0-cil-dev (2.99.3-3) を展開しています...
libglib3.0-cil (2.99.3-3) を設定しています ...
* Installing 1 assembly from libglib3.0-cil into Mono
libglib3.0-cil-dev (2.99.3-3) を設定しています ...

 

広告

 

イケタ!

エラーを吐かずにおわったっぽい。 手当たり次第に試したどれが良かったのかは謎。

pi@simejipi:/ $ sudo pip3 install gattlib
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting gattlib
  Using cached https://files.pythonhosted.org/packages/fe/8d/72d539dd6be2d9677864a1604b8db80696c2d5f018cf8093bf442311162f/gattlib-0.20201113.tar.gz
Building wheels for collected packages: gattlib
  Running setup.py bdist_wheel for gattlib ... done
  Stored in directory: /root/.cache/pip/wheels/f3/0e/67/02a5f3e913268502cbada9ecd14a21cfd724b6715dda780b80
Successfully built gattlib
Installing collected packages: gattlib
Successfully installed gattlib-0.20201113

 

/home/pi/.homebridge/python-hosts  に移って、helpもでるぞ!

pi@simejipi:~/python-host $ ls
LICENSE  README.md  switchbot.py  switchbot_meter.py  switchbot_meter_py3.py  switchbot_py3.py
pi@simejipi:~/python-host $ sudo python3 switchbot_py3.py --help
usage: switchbot_py3.py [-h] [-s] [-d DEVICE]
                        [-c {press,on,off,open,close,pause}] [-i INTERFACE]
                        [--scan-timeout SCAN_TIMEOUT]
                        [--connect-timeout CONNECT_TIMEOUT]

optional arguments:
  -h, --help            show this help message and exit
  -s, --scan            Run Switchbot in scan mode - scan devices to control
  -d DEVICE, --device DEVICE
                        Specify the address of a device to control
  -c {press,on,off,open,close,pause}, --command {press,on,off,open,close,pause}
                        Command to be sent to device. Noted that press/on/off
                        for Bot and open/close for Curtain. Required if the
                        controlled device is Curtain (default: press)
  -i INTERFACE, --interface INTERFACE
                        Name of the bluetooth adapter (default: hci0)
  --scan-timeout SCAN_TIMEOUT
                        Device scan timeout (default: 2 second(s))
  --connect-timeout CONNECT_TIMEOUT
                        Device connection timeout (default: 5 second(s))

 

いろいろ探しているときにbluepyが良いと書いてあったのでこちらもインストールします。インストールは成功したものの”sudo python3 scan.py”ができない。 ま。いっか。

pi@simejipi:/ $ sudo pip3 install bluepy
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting bluepy
  Downloading https://www.piwheels.org/simple/bluepy/bluepy-1.3.0-cp37-cp37m-linux_armv7l.whl (560kB)
    100% |████████████████████████████████| 563kB 435kB/s 
Installing collected packages: bluepy
Successfully installed bluepy-1.3.0

 

広告

 

前途多難

ネットで情報を探して「これでこうしてこうやったら動くよ!」ってのを見てやってもエラー。 これがlinux系(unix系?)の醍醐味!ではなくイヤなところ。

まだ、環境構築の段階なのよね( ゚ー゚)

 

 

コメント