pyenvでPythonのversionを管理する
2021/11/27
基本的にOSに最初から入っているpythonを使用するのはオススメしません。
特に互換性の問題で特定のPythonプログラムが動かないからといって、システムにもともとあるPythonのversionを変更しようとするのは、やめたほうがいいです。 そのPythonで動いていたシステム上のプログラムが動作しなくなる可能性があります。
したがって、開発プログラムを動かすPythonはシステムとは別で管理すべきです。
そこで使用するのがpyenvになります。 pyenvはシステムデフォルトを含めたPythonのversion管理を行います。 Python2系とPython3系の切り替えも簡単にできます。
pyenvのインストール方法
各OSでのpyenvのインストール方法をまとめておきます。
Mac (Homebrew)
Pythonのbuildに必要なpackageを事前にinstallしておきます。
$ brew install openssl readline sqlite3 xz zlib
Homebrewでpyenvをinstallします。
$ brew update
$ brew install pyenv
その後以下のコマンドでpyenvのPATHを通して完了です。
$ echo 'eval "$(pyenv init --path)"' >> ~/.zprofile
$ echo 'eval "$(pyenv init -)"' >> ~/.zshrc
尚、Homebrewを使っていないという方はgitからでも直接install可能ですので、詳しくはpyenvの公式リポジトリをご確認ください。
Linux, Windows (WSL)
Ubuntu, Debian系とRedHat系でinstallする手順が若干異なります。
Ubuntu, Debian系 Pythonのbuildに必要なpackageを事前にinstallします。
$ sudo apt-get update
$ sudo apt-get install make build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \
libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev
pyenvのリポジトリからpyenvをgit cloneします。
$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv
pyenvのPATHを通して完了です。
# sedを実行すると、ファイルの最初のコメント行の後に行が挿入されます。
$ sed -Ei -e '/^([^#]|$)/ {a \
export PYENV_ROOT="$HOME/.pyenv"
a \
export PATH="$PYENV_ROOT/bin:$PATH"
a \
' -e ':a' -e '$!{n;ba};}' ~/.profile
$ echo 'eval "$(pyenv init --path)"' >>~/.profile
$ echo 'eval "$(pyenv init -)"' >> ~/.bashrc
RedHat系 Pythonのbuildに必要なpackageを事前にinstallします。
$ yum install gcc zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel tk-devel libffi-devel xz-devel
pyenvのリポジトリからpyenvをgit cloneします。
$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv
pyenvのPATHを通して完了です。
$ sed -Ei -e '/^([^#]|$)/ {a \
export PYENV_ROOT="$HOME/.pyenv"
a \
export PATH="$PYENV_ROOT/bin:$PATH"
a \
' -e ':a' -e '$!{n;ba};}' ~/.bash_profile
$ echo 'eval "$(pyenv init --path)"' >> ~/.bash_profile
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.profile
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.profile
$ echo 'eval "$(pyenv init --path)"' >> ~/.profile
$ echo 'eval "$(pyenv init -)"' >> ~/.bashrc
pyenvの使用方法
Pythonのinstall
以下のコマンドでinstall可能なPythonのversionリストを取得できます。
$ pyenv install --list
目的のversionをinstallしたい場合は
$ pyenv install 3.9.1
とすればinstallが始まります。
Pythonのversion切り替え
pyenv versions
で切り替え可能なinstall済みのversionが確認できます。
$ pyenv versions
system
2.7.18
* 3.9.1 (set by /Users/user/.pyenv/version)
globalとすると全体に、localにするとそのカレントディレクトリに指定したバージョンが反映されます。
$ pyenv global 3.9.1
$ python --version
Python 3.9.1
$ pyenv local 2.7.10
$ python --version
Python 2.7.10
おわり
各Pythonのversionでinstallしたpackageはversionごとで管理されています。
versionごとではなくプロジェクトごとでpackageを管理したいという方はvenvを利用しましょう。