dullwhaleのメモ帳

何度も同じことを調べなくてよいように...

Debian 12にpyenvでPython 3.12をインストールする

Pythonで開発を行おうとすると、OSに付属のものとは切り離されたバージョンを利用したくなる。 複数バージョンのPythonを管理し、切り替えることができるツールの一つとしてpyenvがある。 この記事ではDebian 12にpyenvをインストールし、pyenvを用いてPython 3.12.3をインストールするまでの手順について残す。 Python 3.12.3は、この記事を書いた時点での最新の安定板である。

手順

最初にpyenvをインストールする。 シェルはbashとする。

# pyenvのインストールスクリプトをダウンロードして、そのまま実行する。
curl https://pyenv.run | bash

# PATHを通して`pyenv`を使えるようにする。
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc

# ~/.profileが存在する場合
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.profile
echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.profile
echo 'eval "$(pyenv init -)"' >> ~/.profile

# ~/.bash_profileが存在する場合
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
echo '[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(pyenv init -)"' >> ~/.bash_profile

# 設定を反映
exec "$SHELL"

続いて、Pythonのインストールに必要な前提のライブラリをインストールする。 さもないと続くpyenv installPython本体のインストールに失敗する。 最低限必要なライブラリはlibssl-devのみであり、他はオプション機能である。 ただしオプションといえども、あとからモジュールが利用できないといった問題で時間を取られないよう、初めからすべてインストールしておくべきだ。

sudo apt install libssl-dev libbz2-dev libffi-dev liblzma-dev libreadline-dev libsqlite3-dev tk-dev

最後にpyenvを用いてPythonをインストールする

# pyenvを使って指定バージョンのPythonをインストール
pyenv install 3.12.3
# インストールしたバージョンのPythonを有効化
pyenv global 3.12.3
# Pythonバージョンがちゃんと切り替わっているか確認
python -V

備考

pyenvが提供する機能は「異なるバージョンのPythonを簡単に切り替えられるようにする」だけである。 プロジェクトごとに利用するパッケージを分離するには別の手段を使う必要がある。 この要求を満たすものとして手軽なものはPythonに付属のvenvだろう。