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