OSX ElcapitanでPython環境構築

手間取ったのでφ(..)メモメモ
python の複数バージョンの共存を狙って homebrew と pyenv でちょっと構築しようとしただけなのにえっらい苦労したのです。anacondaも入れました。

#最初は何も考えてなかった
いきなりbrew istall pythonをかまして、
**Permission denied - /usr/local/Frameworks**
を食らったのでした。YosemiteからElcapitanにアップデートすると食らうらしく、

http://digitizor.com/fix-homebrew-permissions-osx-el-capitan/

こちらを参考に回避した後
pyenvをつかおうとbrew uninstall pythonをしたのでした。

#pyenvのインストール

だれかまとめてくれているだろうと思ったらなんか散らばってる感があったので整理整理。。。
pyenvをインストールして

```shell-session
$ brew install pyenv
```

.bash_profileに下記を追記する。
(これがないと、pythonのバージョンが変わらない)

```shell-session:.bash_profile
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
```

これでよかろう。と言うわけでPATHを通します。

```shell-session
$ source ~/.bash_profile
```

そしたら、インストール可能なバージョンを一覧表示して

```shell-session
$ pyenv install -l
```

~~インストールしたいバージョンを入れる~~ 

**->とか、書いたら最近はanacondaだろ！と言われました。ので、anacondaの章までとんでください**


~~```shell-session
$ pyenv install 2.7.11
```~~
~~そしたら、また怒られてしまいました。。。zlibがなくてpythonがビルドできないらしい
というわけで、主なビルド時の問題ページに誘導されまして、~~

~~https://github.com/yyuu/pyenv/wiki/Common-build-problems~~

~~OSアップデートしたのもあり、下記の2コマンドで乗り切ったのでした。~~

~~```shell-session
brew install readline xz
xcode-select --install
```~~
~~これで晴れて~~

~~```shell-session
$ pyenv global 3.5.1
```~~

~~とかで、切り替えられるようになったとさ。めでたし、めでたし。
つぎはvirtualenvを頑張ってみるとします。~~

#anacondaってなに？

しらべてみたらこちらが出てきました。

[データサイエンティストを目指す人のpython環境構築 2016](http://qiita.com/y__sama/items/5b62d31cb7e6ed50f02c)

**pipもpyenvもvertualenvも内包してるconda最高！** らしい。。。

上記の記事ではMacはさらりと流されてるますが、Macはpyenv->anacondaがいいらしい。良かった！無駄にならなかった。
(そもそも、何故Mac？と言われたわけですが)

というわけでanacondaをpyenvから入れます。取りあえず最新版を入れてみました。

(Python 2.x 系が使いたいからと最初、anaconda-2.4.0を入れたんですが、anaconda自体がpyenv同様のバージョン管理を内包しているので不要でした)

```shell-session
$ pyenv install anaconda3-2.4.0
```

インストールは待ち時間が長めな感じ、インストールが終わったら切り替えてバージョンを確認してみました。

```shell-session
$ pyenv global anaconda3-2.4.0
$ python --version
Python 3.5.0 :: Anaconda 2.4.0 (x86_64)
```

うん。よきかな、よきかな。
ところでデーターサイエンティストを目指す記事には pyenv と anaconda で active が衝突する問題の解決策がのってますが、これはなんか嬉しくなさそう。。。

と言うわけで、同じ y__sama さんの下記の記事を見ると

[pyenvとanacondaを共存させる時のactivate衝突問題の回避策3種類](http://qiita.com/y__sama/items/f732bb7bec2bff355b69)

> デメリット: pyenv localが使えない。

ってかいてありました。あ、やっぱり？
と言うわけで回避策3種類のプラン2を選択します。

OSXでは.bachrcは読み込んでくれないので、`.bash_profile`を編集します。

```shell-session:.bash_profile
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
alias activate="source $PYENV_ROOT/versions/anaconda3-2.4.0/bin/activate"
```

これでよかろう。

```shell-session
$ source ~/.bash_profile
```

さて、conda自体のアップデートを先に念のためやった方がいいらしいので、やっておきます。
2行目だけでも良いらしいのですが、ここは二段階で。。。

```shell-session
$ conda update conda
$ conda update --all
```
トータル200MB超のアップデートで、どう考えても時間がかかるので気長に待ちます。
`conda update anaconda`はやっちゃだめっぽいです。依存解決でバージョンがまき戻ってました。

おもむろにpython 2.x環境を作ってみます。折角なので
[データサイエンティストを目指す人のpython環境構築 2016](http://qiita.com/y__sama/items/5b62d31cb7e6ed50f02c)
を参考にさせていただき、anacondaとしてまとめてで。。。

```shell-session
$ conda create -n anaconda2 python=2.7 anaconda
```
ちなみに、このコマンドは`conda update`してからじゃ無いと失敗しました。。。
環境が構築されている事を確認して。

```shell-session
$ conda env list
```

入るときははaliasにsourceが入っているので、activateだけになります。

```shell-session
activate anaconda2
(anaconda2) MacBook-Pro:~ tnoho$ python --version
Python 2.7.12 :: Anaconda 4.1.1 (x86_64)
```

うんうん。良い感じです。
抜けるときは

```shell-session
source deactivate
```

これで幸せになれましたー。はー長かった。Pythonつらい。
あとは[データサイエンティストを目指す人のpython環境構築 2016](http://qiita.com/y__sama/items/5b62d31cb7e6ed50f02c)を参考にさせて貰いつつanacondaを使っていこうと思うのでした。まる。