Macでpyenv/pyenv-virtualenv/virtualenv/Anaconda/condaを使ってクリーンなpython環境をセットアップ

python環境を構築し直したい

 pythonの環境、色々ライブラリ入れたり、python2.x系とpython3.x系の関係もよくわからなくなってごちゃごちゃしてきました。pyenvというやつを使えば環境共存が楽になると聞いてはいたのですが、既にごちゃごちゃなので今更という感じもあってなかなか手をつけれていませんでした。
 しかし、ついに重い腰を上げてpythonの環境を1から構築し直してみました。結果は大満足、今までのごちゃごちゃ環境とは別にクリーンなpython環境を構築することができて大満足です。python環境ごちゃごちゃになっている人ほどやった方がよいと思います。いつ始めても全然OK!

 今回も宇宙語が続くので、気になる方のみ続きをご覧ください。

python環境関係のパッケージインストール

 pythonのインストール。python2.x系と3.x系の環境共存のためにpyenv、数値計算系のライブラリをまとめてセットアップするためにAnacondaを入れるのが最近のトレンドみたいです。pythonの環境共存には、さらに同じバージョンでの環境共存可能にするためのvirtualenvというものもあるのですが、これには単体のvirtualenvに加えてpyenv-virtualenvというものもありさらにややこしい。virtualenvとpyenv-virtualenvの違いはpyenvとvirtualenvとpyenv-virtualenvが解りやすいです。

 今回は、pyenv、virtualenv、pyenv-virtualenv、Anacondaを全てインストールして仮想環境構築して切り替えられるようにします。具体的な流れは以下になります。1つ1つ実施していきます。全部がつらければ、python(Anaconda)インストール(pyenv経由)あたりまでやるだけでも十分便利(なはず)です。

  • .bashrc準備
  • Homebrewインストール
  • pyenvインストール
  • python(Anaconda)インストール(pyenv経由)
  • pyenv-virtualenvインストール
  • condaでpyenv-virtualenvの仮想環境作成
  • virtualenvインストール

.bashrc準備

 事前に.bashrcを準備しておきましょう。以下記事参照ください。.bashrcの中身はこの時点では空でよいですし、好きな設定を書いておいてもよいです。

Homebrewインストール

 基本的には、以下コマンドをターミナルにコピペして実行すれば自動的にインストールされます。

$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

 Macports使っている人はこれを機にHomebrewに乗り換えましょう。以下記事参照ください。

pyenvインストール

 以下コマンドでインストール、設定。

$ brew install pyenv
$ echo 'eval "$(pyenv init -)"' >> ~/.bashrc

 ターミナルを再起動するか$ source ~/.bashrcを実行すれば pyenvが使えるようになります。

python(Anaconda)インストール(pyenv経由)

 python2、python3をそれぞれインストール。Anacondaというやつは、数値計算系のnumpy等のライブラリがプリインストールされているpythonパッケージで、何かと便利なのでこいつを入れてやります。インストールは結構時間かかります(ネット環境にもよりますが、それぞれ10分くらいかな)。

 python2.x系インストール

$ pyenv install anaconda-2.4.0

 python3.x系インストール

$ pyenv install anaconda3-2.5.0

 インストールした後、環境の切り替えは以下のように可能。

 python2.x系に切り替え

$ pyenv global anaconda-2.4.0

 python3.x系に切り替え

$ pyenv global anaconda3-2.5.0

 今どんなpython環境があるか調べるには、以下コマンドで確認できます。

$ pyenv versions

 以下みたいに表示されます。

* system
  anaconda-2.4.0
  anaconda3-2.5.0

 アスタリスク(*)がついているのが現在自分がいる環境です。pyenv globalで環境を切り替えられます。消したい環境は pyenv uninstall。例えばanaconda-2.4.0いらなくなったという場合は以下コマンドでアンインストールできます。

$ pyenv uninstall anaconda-2.4.0

 インストールできるpython環境の全種類は以下のコマンドでみることができます。

$ pyenv install -l

pyenv-virtualenvインストール

pyenvをさらに便利にするためpyenv-virtualenvをインストール。

$ brew install pyenv-virtualenv

pyenv-virtualenv有効にするには以下実行

eval "$(pyenv virtualenv-init -)"

 毎回実行するのが面倒臭い場合は以下実行するとよいです。

$ echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc
$ echo export PYENV_VIRTUALENV_DISABLE_PROMPT=1 >> ~/.bashrc

インストールや設定は、以下を参照に自分の好みに少しカスタムしています
GitHub pyenv-virtualenv

condaで仮想環境作成

 ここがややこしいのですが、pyenvでanacondaを入れた場合は、python-virtualenvのコマンドで仮想環境生成してもうまくいかなくて、anacondaのパッケージ管理のフレームワークであるcondaで仮想環境を生成するのがよいそうで、python-virtualenvともキチンと連携してくれます。ここらへんはあまりドキュメント見つけられなくて、正しいやり方じゃないのかもしれませんが、今のところこれでうまくいっています。

 まずは、画像処理の環境を構築するために、PILとOpenCVライブラリをインストールしたpython環境を生成します。

 まずはpython2.x系に切り替えるため以下実行しましょう。

$ pyenv global anaconda-2.4.0

 仮想環境を生成します。コマンドは以下。image-processingというのが仮想環境名で、PILopencvがその環境にインストールしたいパッケージ名です。

$ conda create -n image-processing PIL opencv

 以下コマンドで現在の仮想環境を確認します。

$ pyenv versions

 実行すると以下のように表示されて、image-processingという仮想環境が生成されているのがわかります。 

  system
* anaconda-2.4.0
  anaconda-2.4.0/envs/image-processing (set by /Users/karaage/.pyenv/version)
  anaconda3-2.5.0

 以下実行するとimage-processingという仮想環境に移行できます。

$ pyenv global anaconda-2.4.0/envs/image-processing

 $ python実行して import PIL とか import cv2実行してエラーが出なければ無事環境は生成できています。逆に$ pyenv global anaconda-2.4.0 で元の環境に戻って同じことをしたらエラーが出るはずです。つまり仮想環境のみにライブラリがインストールされて、元の環境には汚されてないのがわかります。

 OpenCVやPILを試してみたい方は、以下記事を参考にしてみて下さい。

 あとは、hogehogeというライブラリを入れたい場合は、以下コマンドで探して

$ conda search hogehoge

 みつけたライブラリを以下でインストールしましょう

$ conda install hogehoge

 condaで見つからないライブラリは、 pipでインストールすればOK。例えばhogehogeというパッケージをインストールしたければ以下の通り。

$ pip install hogehoge

 pipはAnacondaと一緒にインストールされているはずですのでインストールは不要です。

virtualenv

 pyenv-virtualenvじゃない方のvirtualenvも入れておきましょう。まずはsystemデフォルトのpython環境に切り替え。

$ pyenv global system

 以下実行すればインストール完了。

$ sudo pip install --upgrade virtualenv

 virtualenvに関してはここまでで完了とします。

まとめ

 pythonの環境を構築できました。これで、様々なpython環境を自由自在に構築して切り替えることができるようになりました。今後は、今まであまりうまくいっていなかったDeep Learning関係の環境をこれでガシガシ構築していこうかなとか思っています。

 2016/04/23追記:とりあえずひたすらディープラーニングのパッケージ入れてみました!

参考書籍

 今回pyenvを使ってみようと思ったきっかけの本です。ただ、本の内容多少古いところもあったので、そのままは採用せず、ネットで調べた最新の記事を参照しました。本の内容自体は良いなと思っています。

参考サイト

HomebrewのインストールからpyenvでPythonのAnaconda環境構築までメモ

Python 環境のインストール

pyenv GitHub

pyenvとvirtualenvとpyenv-virtualenv

関連記事