macOS Mojaveで pyenvを使ってpython3系を使えるようにする

#はじめに
非エンジニアがTensorFlowを使うための技術を学んでいるところで、そもそもPythonのインストールでハマったので忘備録のための記事。

####書いた人
Macで最低限のコマンドを知っている　(cd cat lsなど)
Linuxの最低限のコマンドを知っている(cd cat lsなど)
プログラミングはした事がない

#環境
- macOS 10.14.1 Mojave
- Xcode 10.1

#参考にした記事
- [Python3 TensorFlow for Mac 環境構築](https://qiita.com/tom_ato/items/bbdf4574b3ecb0048fa1)
- [[MacOS Mojave]pyenvでpythonのインストールがzlibエラーで失敗した時の対応](https://qiita.com/zreactor/items/c3fd04417e0d61af0afe)
- [pyenv-virtualenvでディレクトリ単位のpython環境構築](https://qiita.com/niwak2/items/5490607be32202ce1314)

##やること
- Xcodeのインストール
- Xcode Command Line Tools のインストール
- Homebrewのインストール
- pyenvのインストール
- pyenv-virtualenvのインストール
- 環境変数の設定
- pyenvでpython3のインストール
- Mojave用のmacOS SDK headerのインストール

#Xcodeのインストール
Appストアから[最新版](https://itunes.apple.com/jp/app/xcode/id497799835?mt=12)を入手してインストールします。

#Xcode Command Line Toolsのインストール
Homebrewをインストールするために必要なものらしいです。そもそもHomebrewが何か知りたい人は[こちら](https://brew.sh/index_ja)へ。

ターミナルで下記のコマンドを打ち込みます。コピペでOK。

```ruby:terminal
$ xcode-select --install
```
下記が出力されたらOK

```ruby:terminal
xcode-select: note: install requested for command line developer tools
```
#Homebrewをインストール
公式サイトにあるスクリプトを貼り付けるだけ。

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

なんやか色々表示されますが、すぐに続行を促されますので、returnキーを押しましょう。

```ruby:terminal
Press RETURN to continue or any other key to abort
```

さらになんやら表示されて、最後がこんな表示で終わるはず。

```ruby:terminal
==> Next steps:
- Run `brew help` to get started
- Further documentation: 
    https://docs.brew.sh
```

一応、確認をします。

```ruby:terminal
$ brew doctor
```

下記の表示が出ればOKぽい。

```ruby:terminal
Your system is ready to brew.
```

#pyenvのインストール
とりあえずコマンドを入力していくだけ。

```ruby:terminal
$ brew install pyenv
```

なんやか色々出て進んでいきます。とりあえず終わると下記の表示が出るはず。理解したい人は途中もちゃんと読むといいと思います。

```ruby:terminal
==> pyenv
Bash completion has been installed to:
  /usr/local/etc/bash_completion.d

zsh functions have been installed to:
  /usr/local/share/zsh/site-functions
```

#pyenv-virtualenvをインストール
これも下記を入力

```ruby:terminal
$ brew install pyenv-virtualenv
```

下記が出たら完了

```ruby:terminal
🍺  /usr/local/Cellar/pyenv-virtualenv/1.1.3: 20 files, 62.2KB, built in 6 seconds
```

#ようやくPythonインストール
###まずはpyenvでインストールできるpythonのバージョンのリストを確認
なんやかんやいっぱい出てきますけど、TensorFlow使うために3.6.0をインストールします。3.7.xだと現時点でTensorFlowが追いついていないとかなんとか。

```ruby:terminal
$　pyenv install 3.6.0
```

#エラーが出た！　-> 環境変数の設定
ここまで順調に進んできたところで下記のエラーが出てインストールができませんでした。

```ruby:terminal
BUILD FAILED (OS X 10.14.1 using python-build 20180424)
```

なんやかんや調べて環境変数を設定します。

```ruby:terminal
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
$ source .bash_profile
```
この辺りは書き方色々ありましたけども、要はpyenvにpathを通すために必要な記述ということです。

シェルを再起動します。

```ruby:terminal
$ exec $SHELL -l
```

#それでも解決しない！ -> Mojave用のmacOS SDK headerを追加
どうやら色々調べると、こんな記述が。

>code-selectの最新バージョン(2354)にMojave用のmacOS SDK headerがデフォルトで入っていないのが原因のようです。

ということで、下記をインストールします。

```ruby:terminal
$ sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /
```

今回はすんなりいきました！

一応、確認します。

```ruby:terminal
$ pyenv versions
* system (set by /Users/Takeshi/.pyenv/version)
  3.6.0
```

OKぽいですね。
出来る人は５分くらいの作業かと思うのですけど、自分は半日調べたりしてました。
以上！これから始める人は頑張ってください。