pyenv Pythonのバージョン管理
UbuntuでさりげなくできることがとRaspbianではエラーとなることがあります。とくにライブラリーのインストールは問題が多いです。pipでインストールするとエラーの嵐となることがあります。こんなとき、「バージョンXXではできた。」との情報があり試すのにバージョンをかえるのはちょっと面倒です。また、Pythonで納入した客先で改修依頼などがあったとき客先と同じバージョンに簡単に切り替えられたら便利です。こんなとき、pyenvがお役に立ちます。

pipとpip3は違う
pipとpip3は違うのか?
OSをインストールした直後のpipのリストを出力すると違っています。ということはpipでインストールしたライブラリはそれぞれ別個に保存されていることになります。もうPython2は終わったバージョンなのでpipもpython3に所属するようにする必要があります。

pyenvに必要なライブラリ
公式のドキュメント
 https://github.com/yyuu/pyenv/wiki/Common-build-problems

sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev \
libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils
pyenvのインストール

git clone https://github.com/yyuu/pyenv.git ~/.pyenv
/home/pi/.pyenv
pyenvの必要なファイルがインストールされます。

.bashrcに追記

.bashrcの最後に以下を追記します。

export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
export PATH="$PYENV_ROOT/shims:$PATH"
eval "$(pyenv init -)"
変更を有効にする。

exec $SHELL

インストールできるバージョンの確認

pyenv install -l
表示例:

Available versions:
  2.1.3
  2.2.3
  2.3.7
・・・・・・・・・・・・・・・・・・・・・・・
  3.9.4
  3.9.5
  3.9.6
  3.9.7
  3.10.0
  anaconda-1.4.0
  anaconda-1.5.0
  anaconda-1.5.1
  anaconda-1.6.0
  anaconda-1.6.1
  anaconda-1.7.0
anacondaも対象のようです。

インストールされているPython

pyenv versions
表示例:

* system (set by /home/pi/.pyenv/version)
これはOSインストール直後の表示です。
*
は選択されているバージョンの表示です。
systemが選択されています。
systemはPython2.7とPython3.7です。

Pythonのインストール

pyenv install 3.9.7
バージョンを3つの数字で指定します。

* system (set by /home/pi/.pyenv/version)
  3.9.7

Pythonのアンインストール

pyenv uninstall 3.9.7
Pythonのバージョン切り替え

pyenv global 3.9.7
新しくインストールしたバージョンにするとpipでライブラリーを再度インストールし直すことが必要になります。
python、python3とタイプするとどちらもpython-3.9.7が起動します。