Python3なTensorFlow環境構築  (Macとpyenv virtualenv)


# 環境
Mac OS X El Capitan 10.11.3
MacBook Pro (Retina, 13-inch Early 2015)

## 準備
HomeBrewが必要なので、無ければインストール  

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

## pyenv
複数バージョンのPython環境を管理して、コマンドで切り替えることができる。
### インストール
```
$ brew install pyenv
```  
~/.profileに下記を追記

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

現在のPythonインストール状況を確認（環境構築前ならシステムのみが表示されている）

```
$ pyenv versions
* system (set by /Users/yusuke/.pyenv/version)
```

インストール可能なPythonバージョンの一覧表示（結果は必要そうなとこだけ表示）

```
$ pyenv install --list
  2.7.11
  ...
  3.5.1
  ...
  anaconda3-2.4.0
  ...
```

最新のPython3をインストール

```
$ pyenv install 3.5.1
```

こういうエラーが出た場合は

```
zipimport.ZipImportError: can't decompress data; zlib not available
make: *** [install] Error 1
```

コマンドラインツールをインストール

```
$ xcode-select --install
```

設定読み直して

```
$ . .profile
```


インストールやり直す

```
$ pyenv install 3.5.1
```

インストール後はrehashした方が良いらしい

```
$ pyenv rehash
```

インストールされている環境を確認するとこうなっているはずです

```
$ pyenv versions
* system (set by /Users/yusuke/.pyenv/version)
  3.5.1
```

デフォルトの環境を3.5.1に設定して確認

```
$ pyenv global 3.5.1
$ pyenv versions
  system
* 3.5.1 (set by /Users/yusuke/.pyenv/version)
```

### anaconda
Pythonと数値計算ライブラリを色々同時にインストールできるディストリビューション、今回は使いませんが、これは便利なのでインストールしておきます。
Python3系の場合はanaconda3を選ぶ、最新バージョンは2.4.0なのでインストールは下記コマンド

```
$ pyenv install anaconda3-2.4.0

```
インストール後のrehash

```
$ pyenv rehash
```

インストール済み環境を確認するとこのようになるはずです

```
$ pyenv versions
  system
* 3.5.1 (set by /Users/yusuke/.pyenv/version)
  anaconda3-2.4.0
```


## virtualenv
今回は使いません。
pyenvはバージョンごとに環境を持つのにたいして、virtualenvでは環境に名前を付けて（同じバージョンのPythonでもpython35hoge, python35fugaという感じに別の名前をつけて保持できる）その環境を切り替えることができます。


## pyenv-virtualenv
pyenvだとバージョンごとに管理だったが、pyenvの環境に名前を付けて更に細かく管理して、切り替えることができる
### インストール
```
$ brew install pyenv-virtualenv
```

今回はPython3.5.1でTensorFlowの環境を作りたいので```py351tensorflow```という名前を付けておきましょう。
インストールと確認は下記の通りです。

```
$ pyenv version
3.5.1 (set by /Users/yusuke/.pyenv/version)
$ pyenv virtualenv 3.5.1 py351tensorflow
$ pyenv rehash
$ pyenv versions
  system
* 3.5.1 (set by /Users/yusuke/.pyenv/version)
  3.5.1/envs/py351tensorflow
  anaconda3-2.4.0
  py351tensorflow
```

## TensorFlow
Googleが2015年11月にオープンソース化した機械学習ライブラリ。詳しい解説はググればいっぱい出てくるのでここでは割愛します。

公式のドキュメントはこちらに
https://www.tensorflow.org/versions/master/get_started/os_setup.html

先ほどpyenv-virtualenvでインストールしたpy351tensorflow環境を使います

```
$ pyenv global py351tensorflow
$ pyenv version
py351tensorflow (set by /Users/yusuke/.pyenv/version)
```

Python3用のバージョン0.6.0をインストール

```
$ pip install --upgrade https://storage.googleapis.com/tensorflow/mac/tensorflow-0.6.0-py3-none-any.whl
```

インストール成功

```
Successfully installed numpy-1.10.4 protobuf-3.0.0a3 setuptools-19.6 six-1.10.0 tensorflow-0.6.0 wheel-0.26.0
```

公式のドキュメントの通りに動作確認

```
$ python
>>> import tensorflow as tf
>>> hello = tf.constant('Hello, TensorFlow!')
>>> sess = tf.Session()
I tensorflow/core/common_runtime/local_device.cc:40] Local device intra op parallelism threads: 4
I tensorflow/core/common_runtime/direct_session.cc:58] Direct session inter op parallelism threads: 4
>>> print(sess.run(hello))
b'Hello, TensorFlow!'
>>> a = tf.constant(10)
>>> b = tf.constant(32)
>>> print(sess.run(a + b))
42
>>> quit() 
```

この通りになればインストールも成功しています