pyenvによるインストール

pyenvとは

Macのように、OSにPythonがプリインストールされているようなマシンを利用する場合、インストーラなどでpythonをインストールしてPATHを切り替えてしまったり、PythonのバージョンによってはOSの挙動や別のアプリケーションに影響を及ぼす可能性がある。

そのため、macOSではOSプリインストールのPythonはpython、インストーラでインストールした場合のPython3系についてはpython3というコマンドを使用することで切り替えているが、今後macOSのアップデートによりOSプリインストールのPythonバージョンが変わった場合どのようになるかは不明な部分が多い。

また、マイナーバージョン(3.5と3.8など)を複数インストールする必要がある場合はインストーラとaliasを切り替えるなどで対応可能だが、パッチバージョン(3.6.0と3.6.5など)を同一のマシンにインストールすることができない。

そこで、Macで複数のPythonをインストールし、開発環境を切り替えるためのツールがpyenvである。

pyenvはあくまで複数のPythonのバージョンをパッチレベルまで切り替えるためのツールである。 ただし、Macの場合は今後OSプリインストールのPythonとの共存がどのように扱われるか不明であるため、柔軟な対応ができるpyenvを紹介しておく。

pyenvをインストールするには、MacportやHomebrewというMacでのパッケージ管理システムを利用してインストールすることが多い。

本サイトでは、Homebrewからpyenvをインストールする。 Homebrewが未インストールの場合は、Homebrewのインストール を参考とすること。

pyenvのインストール

homebrewがインストールされると、brewコマンドが利用可能となる。brew install インストールするパッケージで様々な開発ツールがインストール可能となる。

brew installコマンドを実施する際には、インターネットに接続されている必要がある。 pyenvのインストールは、以下のコマンドとなる。

% brew install pyenv

Mac OS Catalinaからは、ターミナルのデフォルトシェルがbashからzshとなった。 そのため、pyenvの設定内容を~/.zprofileに以下を追加する。

export PYENV_ROOT=${HOME}/.pyenv
if [ -d "${PYENV_ROOT}" ]; then
    export PATH=${PYENV_ROOT}/bin:$PATH
    eval "$(pyenv init -)"
fi
zshではなくbashを利用しているMacの場合は、上記の内容は「~/.bash_profile」に記載する。

pyenvインストールの確認

pyenvのコマンドを実行し、インストールが完了しているか確認する。 今回はpyenvでインストールできるバージョンの一覧を表示させてみる。

% pyenv install -l
Available versions:
    2.1.3
    2.2.3
    2.3.7
    2.4
    2.4.1
    2.4.2
    2.4.3
    2.4.4
    .........

pyenv install -l でインストールしたいバージョンが表示されない場合は、pyenvのバージョンが古くなっている場合がある。その場合は、pyenv自体のアップグレードを行う必要がある。pyenvのアップグレードコマンドは以下の通り。

% brew upgrade pyenv

pyenvによる使用バージョンのインストール

pyenv install バージョン指定で必要なバージョンのインストールが可能となる。 例えば、3.8.0と3.6.9をインストールする場合は以下のようになる。pyenvもインターネットへの接続が必須である。

% pyenv install 3.8.0
・・・
% pyenv install 3.6.9

pyenvでインストールされたPythonは、~/.pyenv以下にインストールされている。 インストールされているバージョンを確認するためのコマンドは、pyenv versionsである。

$ pyenv versions
system (set by /Users/ユーザー名/.pyenv/version)
    3.8.0
    3.6.9

使用するPythonのバージョンを確定する

デフォルトで使用したいバージョンを指定する場合はglobal、特定のディレクトリのみで使用するバージョンを指定するには、使用したいフォルダに移動したのちlocalオプションを使用する。 Macの場合は、基本的にはglovalは使用しない方が良い。 例えば、~/Python38では3.8.0を、~/Python36では3.6.9を設定したいとする。

% mkdir ~/Python38  # ディレクトリの作成
% cd ~/Python38     # ディレクトリへ移動
% pyenv local 3.8.0 # 現在のディレクトリで使用するPythonのバージョンを指定
% python --version  # pythonコマンドのバージョン確認
 Python3.8.0        # 実行結果
% mkdir ~/Python36
% cd ~/Python36
% pyenv local 3.6.9
% python --version
 Python3.6.9

上記の例の場合、~/Python38~/Python36では指定のバージョンが、それ以外のディレクトリではOSでプリインストールされたpythonが使用される。

pyenvでのAnacondaインストール

pyenvでもAnacondaのインストールが可能である。ただし、pyenvに最新版のAnacondaが反映されるには公式でのダウンロードよりも若干のタイムラグが発生するため注意。

pyenvでインストールできるAnacondaのバージョンを確認するには、grepと組み合わせると良い。

% pyenv install -l | grep anaconda3
  ・・・
  anaconda3-4.2.0
  anaconda3-4.3.0
  anaconda3-4.3.1
  anaconda3-4.4.0
  anaconda3-5.0.0
  anaconda3-5.0.1
  anaconda3-5.1.0
  anaconda3-5.2.0
  anaconda3-5.3.0
  anaconda3-5.3.1
  anaconda3-2018.12
  anaconda3-2019.03
  anaconda3-2019.07
  anaconda3-2019.10

2018年12月からは、Anacondaのバージョンは発行年.発行月という表記方法に変わったので、2019年11月現在での最新版はanaconda3-2019.10である。

インストール方法は通常のPythonインストールと同様にpyenv installコマンドで指定する。

% pyenv install anaconda3-2019.10

pyenvでインストールした場合でも、インストーラを使用した場合と同様にツールも含めてインストールされる。