pyenv を使うと任意のバージョンの Python をインストールしたり、異なるバージョンへ切り替えることができる。
インストール (Linux)
以下に従ってビルドに必要なライブラリなどをインストールする。
sudo apt update; sudo apt install build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev curl \
libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev
以下に従って pyenv をインストールする。
# チェックアウトする
$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv
$ cd ~/.pyenv && src/configure && make -C src
# ~/.bashrcに追加する
$ 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
# ~/.bashrcの設定内容を反映させる
$ source ~/.bashrc
# インストールできるPython一覧を確認する
$ pyenv install --list
# PythonのX.XX.Xを後半10個取り出す
$ pyenv install --list | grep -E "^ +[0-9|\.]+$" | tail -n 10
# Python 3.12.1をインストールする
$ pyenv install 3.12.1
Downloading Python-3.12.1.tar.xz...
-> https://www.python.org/ftp/python/3.12.1/Python-3.12.1.tar.xz
Installing Python-3.12.1...
Installed Python-3.12.1 to /home/{ユーザー名}/.pyenv/versions/3.12.1
# デフォルトのPythonを3.12.1にする
$ pyenv global 3.12.1
# Pythonのバージョンを確認する
$ python --version
Python 3.12.1
# pyenvにインストール済みのバージョンの一覧を確認する
$ pyenv versions
system
* 3.12.1 (set by /home/{ユーザー名}/.python-version)
# pythonのパスを確認する
$ which python
/home/{ユーザー名}/.pyenv/shims/python
インストール (Windows)
インストール自体に管理者権限は必要ないが、ダウンロードした PowerShell のスクリプトを実行するのに実行権限が要る。ユーザーディレクトリとか権限的に問題ないディレクトリ上で以下コマンドを実行する。
> Set-ExecutionPolicy RemoteSigned
> Invoke-WebRequest -UseBasicParsing -Uri "https://raw.githubusercontent.com/pyenv-win/pyenv-win/master/pyenv-win/install-pyenv-win.ps1" -OutFile "./install-pyenv-win.ps1"; &"./install-pyenv-win.ps1"
> pyenv --version
環境変数はユーザー環境変数に自動的に追加されるが、VSCode を使っている場合は全部のウィンドウを閉じないと読み込まれない。
それをやっても pyenv が認識されない場合はインストールした PC を再起動する。
コマンド
# インストールできるPython一覧を確認する
$ pyenv install -l
# Python 3.12.1をインストールする
$ pyenv install 3.12.1
# pyenvにインストール済みのバージョンの一覧を確認する
$ pyenv versions
system
* 3.12.1 (set by /home/{ユーザー名}/.python-version)
# デフォルトのPythonを3.12.1にする
$ pyenv global 3.12.1
$ pyenv versions
* 3.12.1 (set by /home/{ユーザー名}/.python-version)
# 現在のディレクトリのPythonを3.12.1にする
# (ディレクトリ上に.python-versionが作成される)
$ pyenv local 3.12.1
# システムにインストールしているPythonに切り替える
$ pyenv global system
# 3.12.1をアンインストールする
$ pyenv uninstall 3.12.1