Raspberry Pi(Raspbian)をAzure IoTで使う場合にはPythonのデフォルトをPython3にしましょう

Raspberry Pi(Raspbian)をAzure IoTを使う為に、RaspbianにAzure系モジュールを入れていた所、Azure.Coreモジュールのインストールエラーにはまりました。

原因を調べた結果、RaspbianではPythonのデフォルトがPython2になっている為という事が分かりました。

今回はRaspbianでPythonのデフォルトをPython3指定するように変更してみました。

スポンサーリンク

ThonnyにはPython3って表示されているけどPythonのデフォルトは違う

Raspbian上でサンプルのPythonを動かそうとするとThonnyが動作します。

実際に画面に確認すると下記のように表示されます。

初心者の自分はこれでRaspberry Pi(Raspbian)ってデフォルトがPython3なんだなぁと勘違いしてしまいました。(お恥ずかしい限りですが。。。)

しかし、Raspberry Pi(Raspbian)上でpython –versionコマンドで確認すると2.7だという事が分かりました。

username@raspberrypi:/usr/bin $ python –version
Python 2.7.16

Azure系のモジュールは3.7以上が要求されますが、PythonのデフォルトがPython2になっていたのでazure.coreモジュールをインストールしてもエラーになったようです。

-upgrade –force-reinstallで強制インストールすればうまく行くとかも見たので試してみても同様にエラーになってました。

username@raspberrypi:/usr/bin $ pip install azure.core

username@raspberrypi:/usr/bin $ pip install azure.core –upgrade –force-reinstall

エラー時はモジュールインストール中に赤文字でエラーメッセージが表示されpip listコマンドで確認しても表示されません。

Python 2からPython 3にリンクを張り替える

Raspberry Pi(Raspbian)のPythonの構造

Raspberry Pi(Raspbian)はデフォルトこういう形になっています。

Some Python commands in the PATH of this session:
– python -> /usr/bin/python2.7
– python3 -> /usr/bin/python3.7
– python3.7 == /usr/bin/python3.7

lsコマンドで確認するとpython2へシンボリックリンクが張られている事が確認出来ます。

username@raspberrypi:/usr/bin $ ls -l /usr/bin/python
lrwxrwxrwx 1 root root 7 11月 29 15:17 python -> python2

python2からPython3へリンクを張り替える

Python2へのシンボリックリンクの削除、Python3へのシンボリックリンクの作成を行う事でデフォルトのPythonのバージョンを3に変更します。

まず最初にPython2へのシンボリックリンクを削除します。シンボリックリンク削除後python –versionコマンドを実行するとエラーのメッセージが表示されます。

username@raspberrypi:/usr/bin $ sudo unlink /usr/bin/python
username@raspberrypi:/usr/bin $ python –version
bash: /usr/bin/python: そのようなファイルやディレクトリはありません

次に、Python3へのシンボリックリンクを作成します。シンボリックリンク作成後python –versionコマンドを実行するとPython3のバージョンが表示される事が確認出来ます。

username@raspberrypi:/usr/bin $ sudo ln -s /usr/bin/python3 /usr/bin/python
username@raspberrypi:/usr/bin $ python –version
Python 3.7.3

pipコマンドでazure.coreをインストールする

Python3に変更後、pipコマンドでazure.coreをインストールします。インストール後pip listコマンドで確認するとインストールが出来ている事が無事確認出来ました。

username@raspberrypi:/usr/bin $ pip install azure.core

username@raspberrypi:/usr/bin $ pip list |grep azure
azure-core 1.9.0

Azure IoT+Raspberry Piで試してみた内容についてはこちらに記載しております。