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 |
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: |
lsコマンドで確認するとpython2へシンボリックリンクが張られている事が確認出来ます。
username@raspberrypi:/usr/bin $ ls -l /usr/bin/python |
python2からPython3へリンクを張り替える
Python2へのシンボリックリンクの削除、Python3へのシンボリックリンクの作成を行う事でデフォルトのPythonのバージョンを3に変更します。
まず最初にPython2へのシンボリックリンクを削除します。シンボリックリンク削除後python –versionコマンドを実行するとエラーのメッセージが表示されます。
username@raspberrypi:/usr/bin $ sudo unlink /usr/bin/python |
次に、Python3へのシンボリックリンクを作成します。シンボリックリンク作成後python –versionコマンドを実行するとPython3のバージョンが表示される事が確認出来ます。
username@raspberrypi:/usr/bin $ sudo ln -s /usr/bin/python3 /usr/bin/python |
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 IoT+Raspberry Piで試してみた内容についてはこちらに記載しております。