はじめに
pyenvで構築したpython環境にて、sudoでpythonプログラムを実行したらimportのエラーが発生。
/etc/sudoersにpyenvのディレクトリパスを追加する事で解決したため、手順を纏めてみた。
環境
・RaspberryPi3B+
・Python3.6.5
RaspberryPiにpyenvとpythonをインストール
こちらのサイトを参考に構築。pythonのバージョンは3.6.5に変更。
pyenvにインストールしたpythonに切り替えてバージョンを確認
切り替え前
$ python -V
Python 2.7.13
$ sudo python -V
Python 2.7.13
切り替え
$ pyenv global 3.6.5
切り替え後
$ python -V
Python 3.6.5
$ sudo python -V
Python 2.7.13
sudoした方のversionがpyenvではなく、システム側となっている。
sudoしてもpyenvを使えるようにする
sudo pythonを実行するとpyenvでなく、システム側のpythonが起動する。
sudoしてもpyenvにインストールしたpythonを起動してもらうため、
こちらを参考に/etc/sudoersのDefaultsにpyenvディレクトリのパスを追加する。
$ sudo nano /etc/sudoers
# Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
# home/pi/.pyenv/shimsを追記
Defaults secure_path="/home/pi/.pyenv/shims:/home/pi/.pyenv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
sudo pythonのバージョンを確認してみる
$ pyenv versions
system
* 3.6.5 (set by /home/pi/.pyenv/version)
$ sudo python -V
Python 3.6.5
pyenvで選択されているversionが表示されればOK。