thumbnail

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を利用しましょう。

author picture

Mitsuru Takahashi

京都市内にてフリーランスエンジニアとして活動しています。

detail

Profile

author picture

Mitsuru Takahashi

京都市内にてフリーランスエンジニアとして活動しています。

detail

© 2022 mitsuru takahashi