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

# はじめに
PythonのAnaconda環境を構築していく際に、各ツールの導入記事は色々見つかったのですが、Homebrewのインストールから通しで解説している記事がなかったため、自分の備忘録も含めてまとめました。
Pythonの仮想環境管理ツールはPyenv以外にもいろいろありますが、今回は情報の多さと使い勝手のシンプルさの面でPyenvを採用しています。

## 用語のまとめ
**Homebrew**:「Mac OS Xオペレーティングシステム上でソフトウェアの導入を単純化するパッケージ管理システムのひとつである」 by wikipedia
追記：HomebrewはmacOSに加えてLinuxとWindows ([WSL](https://docs.microsoft.com/ja-jp/windows/wsl/about))環境での実行を公式にサポートしました。

**pyenv**:様々なバージョンのPythonを管理するツール。導入することで，Python v2系とv3系など，複数のバージョンの切り替えが容易になる。

**Anaconda**: Python本体に加え，科学計算やデータ分析などに使えるライブラリ群、仮想環境作成機能がセットで入っているパッケージ。


> Anaconda is a free collection of powerful packages for Python that enables large-scale data management, analysis, and visualization for Business Intelligence, Scientific Analysis, Engineering, Machine Learning, and more.


## 環境  
Mac OSX 10.11.3 (筆者の環境)
Mac OSX 10.14でも確認済み
※macOS 10.15 Catalinaより，デフォルトシェルがbashからzshへ変更されているので，もしCatalinaで新規にインストールされている方は`4.pyenvのインストール`の箇所は.zshrcへ書き込むようにしてください。

※2020.5.24 追記
筆者のWindows 10 WSL2 (Ubuntu)環境での動作も確認しました。

※2022.7.30 追記
筆者のWindows 11 WSL2 (Ubuntu)環境での動作も確認しました。

:::note
コマンドはターミナル上にそのまま入力。「\\$」以降がそれぞれ一つのコマンドとなってます。「\\$」マークは入力不要です。
:::

# 導入手順
## 1. Homebrewがインストール済か確認

```bash:Terminal
$ brew --version  
```

Homebrew 1.7.6 などと出る方はインストール済なので，3.へ

## 2. Homebrewのインストール
Homebrewがインストールされていない方

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

## 3. Homebrew環境のアップデート
```bash:Terminal
$ brew update --force && brew upgrade
```

## 4.pyenvのインストール
・bashを使っている場合

```bash:Terminal
$ brew install pyenv
$ echo 'eval "$(pyenv init -)"' >> ~/.bash_profile

$ exec $SHELL -l
```
※zshを使っている場合は，~/.bash_profileを~/.zshrcへ置き換え，
`$ echo 'eval "$(pyenv init -)"' >> ~/.zshrc`
としてください。

## 5.Python (Anaconda) のインストール
※ `$ pyenv install -l`  でインストール可能なバージョン一覧を表示できるので，
anacondaの最新バージョンはそちらで確認してください。
### Python version 3系を使いたい方
```bash:Terminal
$ pyenv install anaconda3-2019.10
$ pyenv global anaconda3-2019.10
```
### Python version 2系を使いたい方
```bash:Terminal
$ pyenv install anaconda-4.0.0
$ pyenv global anaconda-4.0.0
```

`pyenv global`によってすべてのディレクトリで該当のPythonバージョンが実行されるようにしています。もしある特定のディレクトリだけで該当バージョンを使用したい場合は，`pyenv local anaconda3-2019.10`のようにしてください。


## 6.確認
```bash:Terminal
$ python
Python 3.7.4 (default, Aug 13 2019, 15:17:50)
[Clang 4.0.1 (tags/RELEASE_401/final)] :: Anaconda, Inc. on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>
```
`python`と打って上記のように出れば導入成功です。(v.3系の場合)
`Ctrl+D`キーを押して (あるいは`quit()`と入力して)Pythonの対話型シェルを抜けてください。

## 7. Pythonバージョンの切り替えについて (pyenvの使い方)
```bash:Terminal
$ pyenv versions
```
でpyenvでインストールしたpythonのバージョンが確認できます。

```bash:Terminal
$ pyenv global anaconda3-4.0.0
```
のようにしてpython 3 (この場合はanaconda3-4.0.0)を使うように指定できます。
他のバージョンへの切り替えも同様に行えます。

また，新しいAnacondaやPythonバージョンのインストールは，

```bash:Terminal
$ pyenv install -l
```
でインストール可能なpythonバージョン一覧を表示し，

```bash:Terminal
$ pyenv install <指定バージョン>
```
で指定したバージョンをインストールできます。

# まとめ
これからmacOSやWindowsのWSL環境でデータ分析を行いたい！という場合に、この記事だけ読めば一通りの環境構築ができるのを目指して書いてみました。情報が少なすぎず、かといって多すぎて混乱させないようにも気を配ったつもりですが、なかなか難しいところもありました。もし何かご不明な点，誤り等ございましたらコメントお願いします。

::: note 
本来ならばAnacondaはバージョン管理機能も持っているため，複数のAnacondaを入れる必要は必ずしもありません。私はpythonのバージョン管理はpyenvのみで行うようにしているため，複数のAnacondaを入れています。
また，Anacondaを直にインストールするとhomebrewと競合するという説があるため，pyenv経由で入れています。
:::


## 関連記事
Linux版：[Linux環境でのpyenvでPythonのAnaconda環境構築メモ](https://qiita.com/aical/items/126128c3e8916ad1988f)