Raspberry Piでpyenv & pyenv-virtualenvを使う(2021.7.21, 2021.7.23追記)

Summary

Raspbianの古いバージョン(raspberrypi 4.9.35-v7+)でpyenvを使ってPython 3.9.6をインストールしたところ失敗していたが、最新のRaspberry Pi OS (raspberrypi 5.10.17-v7+)とPyenv 2.0.3-6-gf043f47cでは問題なくインストールできた。

Raspberry Piにpyenvを使ってPython 3.9.6をインストールしようとしたが、OpenSSLのlibが見つからないといわれてインストールに失敗。紆余曲折あったが、結論としてはOpenSSL 1.1.1kとCurlを手動でインストールすることで解決。

pyenv, python-virtualenvのインストール

事前準備

Raspberry Piのハードウェアバージョンと、Raspberryのバージョンの確認
手元にあったRaspberry Pi 3Bを使用して確認。 設定方法については下記を参照。

インストールを確認したRaspberry PiのハードウェアとRasberry Pi OSのバージョンは以下のとおり。

Raspberry Pi Inager

$ cat /proc/device-tree/model
Raspberry Pi 3 B Rev 1.2

$ uname -a
Linux raspberrypi 5.10.17-v7+ #1421 SMP Thu May 27 13:59:01 BST 2021 armv71 GNU/Linux

$ lsb_release -a
No LSB modules are available.
DIstributor ID: Raspbian
Description:    Raspbian GNU/Linux 10 (buster)
Release:        10
Codename:       buster

必要なツールのインストール及びアップデート

$ sudo apt update
$ sudo apt upgrade -y
$ sudo apt-get update
$ sudo apt-get upgrade
$ 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 tk-dev

Raspberry Piへのpyenvのインストール

Macではpyenvとpyenv-virtualenvを次のようにしてインストールできたが、apt-getではインストールできない(インストール方法は後述)

$ sudo brew install pyenv
$ sudo brew install pyenv-virtualenv

しかたがないので別の方法でインストール

$ git clone https://github.com/yyuu/pyenv.git ~/.pyenv

.bashrcへの設定の追加

$ echo 'export PYENV_ROOT="${HOME}/.pyenv"' >> ~/.bashrc
$ echo 'export PATH="${PYENV_ROOT}/bin:$PATH"' >> ~/.bashrc
$ echo 'eval "$(pyenv init --path)"
$ echo 'eval "$(pyenv init -)"

またはviで編集して追加

$ sudo vi ~/.bashrc

実行結果は下記のようになった。

Install pyenv pyenv version

Python 3.9.6のインストール

古いバージョンのRaspbianではopensslの問題でうまくインストールできなかったが、最新のRaspberry Pi OSでは問題なくpyenvから以下でインストールできた。

$ pyenv install -v 3.9.6

globalに設定

$ pyenv global 3.9.6