概要
Raspbian環境化で詰みました。忘れないように書きます。pyenvはpythonのバージョン管理、切り替えに便利なツールで、
これを使うと簡単に複数バージョンのpythonを保持、管理できます。
wiringpiとは、pythonで使用できるライブラリの一つで、raspiのGPIO操作を容易にします。raspiでGPIOを操作するには、
pythonプログラムをsudo権限で実行しなければなりません。
一方で、sudo権限をつけてpythonを実行すると、pythonはシステム側の環境を参照して実行されます。
つまりどういうことかというと、pyenv下でpipなどを用いてインストールしたパッケージは認識されないということです。加えて、システム側のpythonが呼ばれるのでそもそもpyenvでglobalに設定したpythonのバージョンは無視され、システムが持つpythonのバージョンで実行されます。以下の2つのコマンドを使うとわかりやすいでしょう。
$ sudo python -V
$ python -V
前者はシステム側のpythonバージョンが、後者はpyenvでglobalになっているpythonのバージョンが出るはずです。
解決方法
方法1:sudoersファイルのDefaultにpyenvのpathを追加する。
やってないので割愛。調べれば出てきます。
方法2:sudo実行時に-Eオプションを付与する
以下のように実行します。
$ sudo -E python hoge.py
-Eオプションは実行したいコマンドの直前につけます。-Eオプションはユーザの環境変数を引き継ぎます。
方法3:直接pyenv下のpythonを実行する
$ sudo pyenvのパス/pythonV.V hoge.py
V.Vは任意のバージョン。
以上です。方法3は記述するのが面倒なので方法1か2を私は推します。