pyenvでanacondaと通常pythonを切り替える

以前このブログでも紹介したAnacondaMacで使うとき、Systemにもとから入ってるpythonbrewで入れたpython等とライブラリパスなどがぶつかって使いづらいときがあります。

そこでpyenvを入れてみました。ググるとやり方は出てきますが一応ここでも。

# brew install pyenv
# cat >> .bashrc
HOMEBREW_PATH=/opt/boxen/homebrew
export PYENV_ROOT=$HOMEBREW_PATH/opt/pyenv
if [ -s $HOMEBREW_PATH/bin/pyenv ] ; then
  eval "$(pyenv init -)"
  pyenv global 2.7.6
  pyenv version | sed -e 's/ .*//'
fi
# source .bashrc
(初回は2.7.6がまだ入ってないのでエラーが出る)
# pyenv install 2.7.6
# source .bashrc
(これでOK)

上のシェル変数HOMEBREWはhomebrewのインストールパスに合わせて書き換えます。(上記はboxenでhomebrewを入れている場合です)。pyenvはデフォルトだとユーザごとに色々インストールしますがシステム共通でインストールする場合は上記のようにPYENV_ROOTを指定してやると便利かもです。

anacondaのMAC版はpkgファイルもありますが、pyenvで切り替えるときはシェルバージョンのインストーラを使います。ここからAnaconda-x.x.x-MacOSX-x86_64.shみたいな名前のファイルをDLして以下のコマンドでインストールします。

# bash ~/Downloads/Anaconda-x.x.x-MacOSX-x86_64.sh
(ライセンスなど聞かれるので[yes]で進んで、
インストールパスを指定するところで 
$PYENV_ROOT/versions/anaconda なパスを指定
(上の例だと /opt/boxen/homebrew/opt/pyenv/versions/anaconda になる ) 
※ あと最後に .bash_profileにパス指定するかを聞かれるので no にすること。
yesにするとpyenvで切り替えてもanacondaを常に見に行ってしまうので注意。)

これで通常のpythonとanacondaを切り替えられます。

# pyenv global 2.7.6; python --version
Python 2.7.6
# pyenv global anaconda; python --version
Python 2.7.6 :: Anaconda 1.9.1 (x86_64)

便利ですね。切り替えておけばパッケージの追加はpipで普通にインストールすれば指定バージョンのほうに入ります。Good.

ちなみに僕はscipyやnumpyやscikitlearn, theanoやgensimのようなデータ分析系パッケージはanacondaの方に入れて、クローラのscrapyとかは2.7.6のほうに入れて使い分けるようにしました。(anacondaの方にscrapyのインストールが出来なかったのでそのようにした)