pyenvとpyenv-virtualenvでMacのPython環境を整える。

Pythonでプログラミングをしていると、Pythonのバージョンを切り換えてテストしたいとか、TensorFlowを試してみたいけど今のPython環境を余計な追加パッケージで汚したくない…なんていうケースが多々あります。
こんな要求に答えてくれるのが、Pythonの環境スイッチツール、pyenv並びにpyenv-virtualenvです。

pyenvを用いると、Python 2.7とか3.6とか、複数のバージョンをインストール出来て、自由にバージョンを切り換えることが出来るようになります。
さらに、pyenv + pyenv-virtualenvを用いてPython環境を仮想化することにより、プロジェクト毎に最適なPython環境を自由自在に構築することが可能になります。

こんな環境をMacに導入しました。

 

1. Homebrewのインストール

pyenvとpyenv-virtualenvのインストールに先だって、MacOS用パッケージマネージャHomebrewをインストールします。

ターミナルで次のコマンドを実行します。途中、管理者のパスワードが要求されたら入力しましょう。

 

ちゃんとインストールされているか確認するため、brewコマンドのパスを調べてみましょう。

 

2. pyenvのインストール

Homebrewでpyenvをインストール

 

bashの環境設定ファイル.bash_profileにpyenv関係の設定を書き込みます。

 

3. pyenvで複数のPythonをインストール

どんなバージョンがインストール可能か確認してみましょう。2系、3系は勿論のこと、numpy、scipy、matplotlib等の数値解析用パッケージが予め同梱されているanacondaなど、てんこ盛りです。

 

2.7.13、3.5.3、anaconda3-4.2.0をインストールしました。

 

インストールしたバージョンがリストアップされています。
*が付いているsystemが現在有効なバージョンです。systemとはMacOSに元々入っているバージョンで2.7.10でした。

 

4. pyenvでバージョンを切換

Pythonのバージョンを、”global”でanacondaに切り換えてみます。

 

バージョンを確認すると、*がanacondaに付いています。
また、Pythonのバージョンは3.5.2に切り替わっています。

 

“global”に替えて、”local”によってバージョンを切り換えることも出来ます。
“global”は全般的に適用するバージョンを、”local”は特定のディレクトリで局所的に用いるバージョンを指定するものです。

ディレクトリ”~/test/”にて、”local”で3.6.0に切り換えてみました。
こうすることにより、ディレクトリ”~/test/”以下では、”local”で指定した3.6.0が、それ以外のディレクトリでは、”global”で指定した3.5.2(Anaconda)が有効になります。
ディレクトリ毎にPython環境を簡単に切り換えることが出来ます。

 

5. pyenv-virtualenvのインストール

Homebrewでpyenv-virtualenvをインストールします。

 

さて、さきほどpyenvでバージョン3.6.0をインストールしました。この環境をそのままキープしつつ、pyenv-virtualenvを使って”tensorflow”という名称の仮想環境を作ってみましょう。TensorFlowはGoogleの機械学習で巷で話題のやつ。pyenv-virtualenvでTensorFlow用の環境を作って、近々遊んでみようということで。

 

pyenvで調べると、tensorflowという名称が確認できます。

 

tensorflowというディレクトリを作って、”local”でtensorflowの環境を構築します。

 

pyenvでバージョンを確認すると、tensorflowに切り替わっています。
3.6.0をベースにした仮想環境なので、pythonのバージョン3.6.0です。

 

以上、pyenv +pyenv-virtualenvによるPython環境の構築でした。pyenvコマンドでバージョン切換が自由自在な上、仮想環境も構築できます。さらにディレクトリ毎に独立した環境を設定できる。非常に便利。