Pythonの環境構築 on Mac ( pyenv, virtualenv, anaconda, ipython notebook )

# はじめに

pythonの環境構築を今後のためにまとめておきます。

- バージョン管理をします ( pyenv )
- 環境管理をします ( virtualenv )
- anacondaも使います ( anaconda: 便利なpythonパッケージ )
- iPython notebookにも触れます ( 知らないと損な開発 must item )

# 基本設定

## pyenv virtualenv のインストール
まず、homebrewで pyenvとvirtualenvをインストールします。
( homebrewはインストール済みの前提です。 )

pyenvでバージョンの管理が出来ます。
virtualenvで開発環境など環境ごとの管理が出来ます。

```
$ brew install pyenv
$ brew install pyenv-virtualenv
```

## パスを通す

次に、パスを通します。 `.bash_profile` に下記を記述します。そうするとターミナルの起動時に自動的に読み込みんでくれるようになります。(ログインshellがbashではない方は適宜対応して下さい)

```bash:~/.bash_profile
PYENV_ROOT=~/.pyenv
export PATH=$PATH:$PYENV_ROOT/bin
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
```

パスを通すことで以下のようにコマンドを実行させることが出来るようになります。

```
$ pyenv
```

`.bash_profile`を一旦読み込みます。

```
$ source ~/.bash_profile
```

# anacondaをpyenvでインストール

## anacondaのインストール

さて、pythonをインストールしていきます。

```
$ pyenv install --list
```

こうするとインストール可能なpythonのバージョン一覧が見れます。この中から好きなバージョンのpythonをインストールすることが出来ます。
ここではanacondaをインストールしていきます。anacondaとはPython本体とよく使うパッケージをまとめてセットアップして用意してくれているもので、とても便利なものです。python単体をインストールするよりもこちらのほうが楽です。

```
$ pyenv install anaconda3-2.4.1
```

このコマンドは完了までに時間がかかります。これでPython3に各種パッケージがインストールされたanacondaがインストールされます。

## 使用バージョンを切り替える

現在使用されているバージョンを確認します。

```
$ pyenv versions
```

以下のように `anaconda3-2.4.1` があればオーケーです。 `*`がついているのが現在しようしているバージョンなので `anaconda3-2.4.1` に切り替えましょう。

```
* system
anaconda3-2.4.1 (set by /Users/your_name/.pyenv/version)
```



```
$ pyenv global anaconda3-2.4.1
```

```
$ pyenv versions
```

```
system
* anaconda3-2.4.1 (set by /Users/your_name/.pyenv/version)
```

## 他のバージョンのインストール

さて、これでpythonを使えるようになったわけですが、 python2のanacondaもインストールしておきましょう。

```
$ pyenv install anaconda-2.4.0
```

```
system
anaconda-2.4.0
* anaconda3-2.4.1 (set by /Users/your_name/.pyenv/version)
```

あとは以下のようにいつでも切り替えられます。python2系、python3系は使い分ける必要がある場面もあるので両方用意しておくのが良いかと思います。簡単にバージョンを切り替えられる `pyenv`の強みが少し感じられたのではないでしょうか。

```
$ pyenv global anaconda-2.4.0
```

※ 特になければ、新しいpython3系を使うのが良いと思います。

# ipython notebook を使ってみる

anacondaをインストールしたことで、好きなバージョンのpythonが使えるようになりました。
pythonで開発するなら知らないといけない `ipython notebook`を軽く触れておきましょう。

anacondaをインストールすると、既に環境は整っています。

```
$ ipython notebook
```

と打つとブラウザが立ち上がります。

ブラウザの右上の「New」 > 「Python3」から新しいファイルを作成出来ます。

![スクリーンショット_2016-08-13_16_56_31.png](https://qiita-image-store.s3.amazonaws.com/0/40796/a7635c4a-de9e-4e5c-2aa2-f464369b2eb8.png)

ファイルが開くとpythonのコードを書くことが出来、「Shift + enter」 でセル内のコードを実行出来ます。
以下のような感じでグラフの描画もラクラク出来ます。

![スクリーンショット 2016-08-13 17.02.57.png](https://qiita-image-store.s3.amazonaws.com/0/40796/e8af71f5-dfcd-a29f-feb4-6a5305f7922b.png)

開発していく中でとても強力なツールなので使えるようにしておくとよいでしょう。

以前、データ分析に関する投稿をしましたが、これも全てipython notebook上で行っています。
[Pythonでデータ分析実践演習 ~2016 New Coder Survey 編~](http://qiita.com/shizuma/items/448140c2da10b4616f50)

# virtual-envによる環境管理

チーム開発する上でメンバーと開発環境を統一する必要があります。
そんなときは環境ごとにセットアップするのがよいと思います。

## virtual-envの作成

まず、共通のバージョンのpythonをインストールします。(ここでは3.5系)

```
$ pyenv install 3.5.1
$ pyenv virtualenv 3.5.1 hoge
```

これで  3.5.1の 「hoge」という名前の環境が出来ます。
それで環境を指定するディレクトリに移動します。
そしてその中でバージョンを指定します。

```
$ pyenv local hoge
```

こうすることでこのディレクトリ内では 「hoge」の環境が適用されます。

これだけで環境のセッティングは完了です。

注意するのはanacondaと違って純粋なpythonなので必要なパッケージはインストールの必要があります。

## パッケージのインストールと管理

以下のように必要なパッケージはインストールしていきましょう。下の `numpy`のインストールは例です。

```
$ pip install numpy
```

さて、他の人と環境を統一するためにはインストールしたパッケージのバージョンも同期する必要があります。
それでは自分の環境を出力してみます。

```
$ pip freeze > requirements.txt
```

`pip freeze`で右側のファイル名は出力ファイル名です。一般的に `requirements.txt`に出力するようなのでこの名前にするのがbetterかと思います。

例えば、numpyだけinstallしてみてrequirements.txtに出力してみました。

```
$ pip install numpy
$ pip freeze > requirements.txt
$ cat requirements.txt
```

```
numpy==1.11.1
```

他の人はこのファイルからパッケージをインストールします。

```
$ pip install -r requirements.txt
```

これでファイルに記述してあるパッケージがインストールされます。
githubのレポジトリのREADME内でパッケージをインストールさせるところでよく見かけます。

## virtual-envの削除

最後に、このvirtual環境を削除する方法です。

```
$ pyenv uninstall hoge
```


これで作成したvirtual環境を削除出来ます。