複数のプロジェクトで異なるPythonのバージョンを使用したい時など、状況に応じてPythonのバージョンを切り替えるためにpyenvを使う。
Macではpyenvがそのまま使える。Windowsの場合、pyenv-winがある。
なお、インストール方法は異なるが、インストール後の使い方はMacもWindowsもほぼ同じ。
pyenvのインストール
Homebrewからインストールする。
$ brew install pyenv
Homebrewがない場合、以下のコマンドでインストールする。
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
pyenvにPythonのパスを通す
github pyenv Set up your shell environment for Pyenv
上記のページを参考に、自分の使用しているシェル、環境に合わせてパス追加を行う。
# .pyenvのパスを設定する。
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bach_profile
# pythonコマンドのパスを設定する
$ echo 'export PATH="$PYENV_ROOT/shims:$PATH"' >> ~/.bach_profile
# pyenvの初期設定を行う
$ echo 'eval "$(pyenv init --path)"' >> ~/.bash_profile
$ echo 'if [ -n "$PS1" -a -n "$BASH_VERSION" ]; then source ~/.bashrc;fi'>>~/.bash_profile
私の環境の場合、.pyenv/binではなく、.pyenv/shimsだったのでgithubの記載情報から変更して設定した。
パス設定後はターミナルを再起動する。
インストール可能なPythonのバージョンを確認
pyenvでインストール可能なpythonのバージョンを確認する。
マイナーバージョンまで細かく分かれているため、grepなどでバージョンを指定したほうがいい
$ pyenv install --list | grep 3.9
【出力例】
3.9.0
3.9-dev
3.9.1
3.9.2
3.9.4
3.9.5
3.9.6
3.9.7
3.9.8
3.9.9
3.9.10
3.9.11
miniconda-3.9.1
miniconda3-3.9.1
miniconda3-3.9-4.9.2
miniconda3-3.9-4.10.3
miniconda3-3.9-4.11.0
pypy3.9-7.3.8-src
pypy3.9-7.3.8
バージョンを指定してインストールする
インストール可能なバージョンを確認したら、バージョンを指定してインストールする。
$ pyenv install 3.9.11
【出力例】
・・・
Installed Python-3.9.11 to /Users/kazumac/.pyenv/versions/3.9.11
インストールされているバージョンの確認
$ pyenv versions
【出力例】
* system (set by /Users/kazumac/.pyenv/version)
3.10.3
3.9.11
pyenv経由でインストールされたPythonのバージョン一覧が表示される。
「*」がついているバージョンはglobal, localの両方で設定されているバージョンとなる。
Pythonのバージョンを切り替える
$ pyenv global 3.9.11
$ pyenv versions
system
3.10.3
* 3.9.11 (set by /Users/kazumac/.pyenv/version)
バージョンが切り替わる。
Pythonのバージョン確認
$ python -V
Python 3.9.11
pythonコマンドから実行されるPythonのバージョンが指定したバージョンになっていることが確認できる。
venvとpythonのバージョン
venvでpython仮想環境を作る場合、venvを実行した時に使用されているバージョンのpythonで仮想環境が作成される。
venvで仮想環境作成後に、pyenvでpythonのバージョンを切り替えても、venvのpythonバージョンは切り替わらないので注意。
切り替えた後のpythonバージョンで仮想環境を作り直す必要がある。