ラズパイ4Bにpyenvをインストールする(python 3.8.2)
30分位かかる。
手順
必要なライブラリを入手。
sudo apt install -y git openssl libssl-dev libbz2-dev libreadline-dev libsqlite3-dev
出力結果
パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 git はすでに最新バージョン (1:2.20.1-2+deb10u1) です。 libreadline-dev はすでに最新バージョン (7.0-5) です。 libreadline-dev は手動でインストールしたと設定されました。 libssl-dev はすでに最新バージョン (1.1.1d-0+deb10u2+rpt1) です。 openssl はすでに最新バージョン (1.1.1d-0+deb10u2+rpt1) です。 openssl は手動でインストールしたと設定されました。 以下のパッケージが自動でインストールされましたが、もう必要とされていません: alsa-base docbook-xml docbook-xsl gir1.2-gst-plugins-base-1.0 gir1.2-gstreamer-1.0 gir1.2-gtkspell3-3.0 gir1.2-javascriptcoregtk-4.0 gir1.2-keybinder-3.0 gir1.2-webkit2-4.0 gir1.2-wnck-3.0 gnome-session-canberra gstreamer0.10-alsa gstreamer0.10-plugins-base libdrm-dev libdrm-etnaviv1 libdrm-exynos1 libdrm-freedreno1 libdrm-omap1 libdrm-tegra0 libenchant-dev libgles-dev libglvnd-core-dev libglvnd-dev libgstreamer-plugins-base0.10-0 libgstreamer0.10-0 libgtkspell3-3-0 libjavascriptcoregtk-4.0-dev libkeybinder-3.0-0 libllvm8 libopengl0 libsoup2.4-dev libva-wayland2 libwnck-3-0 libwnck-3-common libx11-xcb-dev libxcb-dri2-0-dev libxcb-dri3-dev libxcb-glx0-dev libxcb-present-dev libxcb-randr0-dev libxcb-shape0-dev libxcb-sync-dev libxcb-xfixes0-dev libxfce4util-bin libxfce4util-common libxfce4util7 libxfconf-0-2 libxshmfence-dev libxss-dev libxt-dev libxxf86vm-dev mesa-common-dev pimixer point-rpi python-gobject-2-dev sgml-data x11proto-scrnsaver-dev x11proto-xf86vidmode-dev xfconf これを削除するには 'sudo apt autoremove' を利用してください。 以下の追加パッケージがインストールされます: bzip2-doc 提案パッケージ: sqlite3-doc 以下のパッケージが新たにインストールされます: bzip2-doc libbz2-dev libsqlite3-dev アップグレード: 0 個、新規インストール: 3 個、削除: 0 個、保留: 4 個。 1,208 kB のアーカイブを取得する必要があります。 この操作後に追加で 2,584 kB のディスク容量が消費されます。 取得:1 http://ftp.jaist.ac.jp/raspbian buster/main armhf bzip2-doc all 1.0.6-9.2~deb10u1 [493 kB] 取得:2 http://ftp.jaist.ac.jp/raspbian buster/main armhf libbz2-dev armhf 1.0.6-9.2~deb10u1 [27.7 kB] 取得:3 http://ftp.jaist.ac.jp/raspbian buster/main armhf libsqlite3-dev armhf 3.27.2-3 [688 kB] 1,208 kB を 2秒 で取得しました (663 kB/s) 以前に未選択のパッケージ bzip2-doc を選択しています。 (データベースを読み込んでいます ... 現在 177100 個のファイルとディレクトリがインストールされています。) .../bzip2-doc_1.0.6-9.2~deb10u1_all.deb を展開する準備をしています ... bzip2-doc (1.0.6-9.2~deb10u1) を展開しています... 以前に未選択のパッケージ libbz2-dev:armhf を選択しています。 .../libbz2-dev_1.0.6-9.2~deb10u1_armhf.deb を展開する準備をしています ... libbz2-dev:armhf (1.0.6-9.2~deb10u1) を展開しています... 以前に未選択のパッケージ libsqlite3-dev:armhf を選択しています。 .../libsqlite3-dev_3.27.2-3_armhf.deb を展開する準備をしています ... libsqlite3-dev:armhf (3.27.2-3) を展開しています... bzip2-doc (1.0.6-9.2~deb10u1) を設定しています ... libsqlite3-dev:armhf (3.27.2-3) を設定しています ... libbz2-dev:armhf (1.0.6-9.2~deb10u1) を設定しています ... install-info (6.5.0.dfsg.1-4+b1) のトリガを処理しています ...
pyenv
を入手。
git clone https://github.com/yyuu/pyenv.git ~/.pyenv
端末起動時にパスを通すようにする。
sudo vi ~/.bash_profile
export PYENV_ROOT="$HOME/.pyenv" export PATH="$PYENV_ROOT/bin:$PATH" eval "$(pyenv init -)"
新しく端末を起動し、以下コマンドを叩く。
$ pyenv -v pyenv 1.2.17-2-ga8ca63fc
入手できるPythonバージョンを確認
出力結果
$ pyenv install --list Available versions: 2.1.3 2.2.3 2.3.7 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.5.0 2.5.1 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.6.6 2.6.7 2.6.8 2.6.9 2.7.0 2.7-dev 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.7.6 2.7.7 2.7.8 2.7.9 2.7.10 2.7.11 2.7.12 2.7.13 2.7.14 2.7.15 2.7.16 2.7.17 3.0.1 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.2.0 3.2.1 3.2.2 3.2.3 3.2.4 3.2.5 3.2.6 3.3.0 3.3.1 3.3.2 3.3.3 3.3.4 3.3.5 3.3.6 3.3.7 3.4.0 3.4-dev 3.4.1 3.4.2 3.4.3 3.4.4 3.4.5 3.4.6 3.4.7 3.4.8 3.4.9 3.4.10 3.5.0 3.5-dev 3.5.1 3.5.2 3.5.3 3.5.4 3.5.5 3.5.6 3.5.7 3.5.8 3.5.9 3.6.0 3.6-dev 3.6.1 3.6.2 3.6.3 3.6.4 3.6.5 3.6.6 3.6.7 3.6.8 3.6.9 3.6.10 3.7.0 3.7-dev 3.7.1 3.7.2 3.7.3 3.7.4 3.7.5 3.7.5rc1 3.7.6 3.7.7 3.8.0 3.8-dev 3.8.1 3.8.2 3.9.0a4 3.9-dev activepython-2.7.14 activepython-3.5.4 activepython-3.6.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-1.8.0 anaconda-1.9.0 anaconda-1.9.1 anaconda-1.9.2 anaconda-2.0.0 anaconda-2.0.1 anaconda-2.1.0 anaconda-2.2.0 anaconda-2.3.0 anaconda-2.4.0 anaconda-4.0.0 anaconda2-2.4.0 anaconda2-2.4.1 anaconda2-2.5.0 anaconda2-4.0.0 anaconda2-4.1.0 anaconda2-4.1.1 anaconda2-4.2.0 anaconda2-4.3.0 anaconda2-4.3.1 anaconda2-4.4.0 anaconda2-5.0.0 anaconda2-5.0.1 anaconda2-5.1.0 anaconda2-5.2.0 anaconda2-5.3.0 anaconda2-5.3.1 anaconda2-2018.12 anaconda2-2019.03 anaconda2-2019.07 anaconda3-2.0.0 anaconda3-2.0.1 anaconda3-2.1.0 anaconda3-2.2.0 anaconda3-2.3.0 anaconda3-2.4.0 anaconda3-2.4.1 anaconda3-2.5.0 anaconda3-4.0.0 anaconda3-4.1.0 anaconda3-4.1.1 anaconda3-4.2.0 anaconda3-4.3.0 anaconda3-4.3.1 anaconda3-4.4.0 anaconda3-5.0.0 anaconda3-5.0.1 anaconda3-5.1.0 anaconda3-5.2.0 anaconda3-5.3.0 anaconda3-5.3.1 anaconda3-2018.12 anaconda3-2019.03 anaconda3-2019.07 anaconda3-2019.10 ironpython-dev ironpython-2.7.4 ironpython-2.7.5 ironpython-2.7.6.3 ironpython-2.7.7 jython-dev jython-2.5.0 jython-2.5-dev jython-2.5.1 jython-2.5.2 jython-2.5.3 jython-2.5.4-rc1 jython-2.7.0 jython-2.7.1 micropython-dev micropython-1.9.3 micropython-1.9.4 micropython-1.10 micropython-1.11 micropython-1.12 miniconda-latest miniconda-2.2.2 miniconda-3.0.0 miniconda-3.0.4 miniconda-3.0.5 miniconda-3.3.0 miniconda-3.4.2 miniconda-3.7.0 miniconda-3.8.3 miniconda-3.9.1 miniconda-3.10.1 miniconda-3.16.0 miniconda-3.18.3 miniconda2-latest miniconda2-3.18.3 miniconda2-3.19.0 miniconda2-4.0.5 miniconda2-4.1.11 miniconda2-4.3.14 miniconda2-4.3.21 miniconda2-4.3.27 miniconda2-4.3.30 miniconda2-4.3.31 miniconda2-4.4.10 miniconda2-4.5.1 miniconda2-4.5.4 miniconda2-4.5.11 miniconda2-4.5.12 miniconda2-4.6.14 miniconda2-4.7.10 miniconda2-4.7.12 miniconda3-latest miniconda3-2.2.2 miniconda3-3.0.0 miniconda3-3.0.4 miniconda3-3.0.5 miniconda3-3.3.0 miniconda3-3.4.2 miniconda3-3.7.0 miniconda3-3.8.3 miniconda3-3.9.1 miniconda3-3.10.1 miniconda3-3.16.0 miniconda3-3.18.3 miniconda3-3.19.0 miniconda3-4.0.5 miniconda3-4.1.11 miniconda3-4.2.12 miniconda3-4.3.11 miniconda3-4.3.14 miniconda3-4.3.21 miniconda3-4.3.27 miniconda3-4.3.30 miniconda3-4.3.31 miniconda3-4.4.10 miniconda3-4.5.1 miniconda3-4.5.4 miniconda3-4.5.11 miniconda3-4.5.12 miniconda3-4.6.14 miniconda3-4.7.10 miniconda3-4.7.12 pypy-c-jit-latest pypy-c-nojit-latest pypy-dev pypy-stm-2.3 pypy-stm-2.5.1 pypy-1.5-src pypy-1.5 pypy-1.6 pypy-1.7 pypy-1.8 pypy-1.9 pypy-2.0-src pypy-2.0 pypy-2.0.1-src pypy-2.0.1 pypy-2.0.2-src pypy-2.0.2 pypy-2.1-src pypy-2.1 pypy-2.2-src pypy-2.2 pypy-2.2.1-src pypy-2.2.1 pypy-2.3-src pypy-2.3 pypy-2.3.1-src pypy-2.3.1 pypy-2.4.0-src pypy-2.4.0 pypy-2.5.0-src pypy-2.5.0 pypy-2.5.1-src pypy-2.5.1 pypy-2.6.0-src pypy-2.6.0 pypy-2.6.1-src pypy-2.6.1 pypy-4.0.0-src pypy-4.0.0 pypy-4.0.1-src pypy-4.0.1 pypy-5.0.0-src pypy-5.0.0 pypy-5.0.1-src pypy-5.0.1 pypy-5.1-src pypy-5.1 pypy-5.1.1-src pypy-5.1.1 pypy-5.3-src pypy-5.3 pypy-5.3.1-src pypy-5.3.1 pypy-5.4-src pypy-5.4 pypy-5.4.1-src pypy-5.4.1 pypy-5.6.0-src pypy-5.6.0 pypy-5.7.0-src pypy-5.7.0 pypy-5.7.1-src pypy-5.7.1 pypy2-5.3-src pypy2-5.3 pypy2-5.3.1-src pypy2-5.3.1 pypy2-5.4-src pypy2-5.4 pypy2-5.4.1-src pypy2-5.4.1 pypy2-5.6.0-src pypy2-5.6.0 pypy2-5.7.0-src pypy2-5.7.0 pypy2-5.7.1-src pypy2-5.7.1 pypy2.7-5.8.0-src pypy2.7-5.8.0 pypy2.7-5.9.0-src pypy2.7-5.9.0 pypy2.7-5.10.0-src pypy2.7-5.10.0 pypy2.7-6.0.0-src pypy2.7-6.0.0 pypy2.7-7.0.0-src pypy2.7-7.0.0 pypy2.7-7.1.0-src pypy2.7-7.1.0 pypy2.7-7.1.1-src pypy2.7-7.1.1 pypy2.7-7.2.0-src pypy2.7-7.2.0 pypy2.7-7.3.0-src pypy2.7-7.3.0 pypy3-dev pypy3-2.3.1-src pypy3-2.3.1 pypy3-2.4.0-src pypy3-2.4.0 pypy3.3-5.2-alpha1-src pypy3.3-5.2-alpha1 pypy3.3-5.5-alpha-src pypy3.3-5.5-alpha pypy3.5-c-jit-latest pypy3.5-5.7-beta-src pypy3.5-5.7-beta pypy3.5-5.7.1-beta-src pypy3.5-5.7.1-beta pypy3.5-5.8.0-src pypy3.5-5.8.0 pypy3.5-5.9.0-src pypy3.5-5.9.0 pypy3.5-5.10.0-src pypy3.5-5.10.0 pypy3.5-5.10.1-src pypy3.5-5.10.1 pypy3.5-6.0.0-src pypy3.5-6.0.0 pypy3.5-7.0.0-src pypy3.5-7.0.0 pypy3.6-7.0.0-src pypy3.6-7.0.0 pypy3.6-7.1.0-src pypy3.6-7.1.0 pypy3.6-7.1.1-src pypy3.6-7.1.1 pypy3.6-7.2.0-src pypy3.6-7.2.0 pypy3.6-7.3.0-src pypy3.6-7.3.0 pyston-0.5.1 pyston-0.6.0 pyston-0.6.1 stackless-dev stackless-2.7-dev stackless-2.7.2 stackless-2.7.3 stackless-2.7.4 stackless-2.7.5 stackless-2.7.6 stackless-2.7.7 stackless-2.7.8 stackless-2.7.9 stackless-2.7.10 stackless-2.7.11 stackless-2.7.12 stackless-2.7.14 stackless-3.2.2 stackless-3.2.5 stackless-3.3.5 stackless-3.3.7 stackless-3.4-dev stackless-3.4.1 stackless-3.4.2 stackless-3.4.7 stackless-3.5.4
実行時点では3.8.2
が正式の最新っぽい。
Pythonビルド環境の入手
sudo apt-get update; sudo apt-get install --no-install-recommends make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev
Pythonインストール&ビルド
pyenv install 3.8.2
10〜15分くらいかかる。
$ pyenv versions * system (set by /home/pi/.pyenv/version) 3.8.2
Pythonバージョン設定
before
$ python -V Python 2.7.16 $ python3 -V Python 3.7.3
pyenv local 3.8.2 pyenv global 3.8.2
after
$ python -V Python 2.7.16 $ python3 -V Python 3.8.2
python3
コマンドのほうだけ変化した。python
コマンドは2
のまま……。
ついでにpip
も確認。
before
$ pip -V pip 19.3.1 from /home/pi/.local/lib/python3.7/site-packages/pip (python 3.7) $ pip3 -V pip 19.3.1 from /home/pi/.local/lib/python3.7/site-packages/pip (python 3.7)
after
$ pip3 -V pip 19.2.3 from /home/pi/.pyenv/versions/3.8.2/lib/python3.8/site-packages/pip (python 3.8) $ pip -V pip 19.2.3 from /home/pi/.pyenv/versions/3.8.2/lib/python3.8/site-packages/pip (python 3.8) $ pip2 -V pip 19.3.1 from /home/pi/.local/lib/python2.7/site-packages/pip (python 2.7)
pip
コマンドは2
でなく3
。こういう罠が普通に潜んでいるから怖い。
所感
思ったよりは順調だった。
情報源
対象環境
- Raspbierry pi 4 Model B
- Raspbian buster 10.0 2019-09-26 ※
- bash 5.0.3(1)-release
$ uname -a Linux raspberrypi 4.19.97-v7l+ #1294 SMP Thu Jan 30 13:21:14 GMT 2020 armv7l GNU/Linux