Macで「ゼロから作るDeep Learning」を読む時の環境構築メモ

2016-11-05 #Development

面白そうだったの買ってみました。まだ途中ですが初めて掲示板のCGIを触ったときのようなワクワク感があります。

Pythonの環境でさっそく躓いたのでメモ。


普段Rubyの案件をちょこちょこやっているので既にHomebrewやrbenvが入っている環境が手元にあって、Pythonの知識は0という状態からのスタートである事を先に書いておきます。

pyenvを入れる

自分のPCにはOSX Sierraが入っているのですが、入っていたPythonのバージョンは2.7.10でした。書籍のサンプルはバージョン3で動くとの事なので、まずはバージョン3を入れます。

そのままglobalのディレクトリにインストールしても良いのですが、rubyを触る時にはrbenvでバージョンを切り替えて管理していて、それが非常に便利なのでPythonもpyenvで管理した方が良いに違いないという事でpyenvから入れていきます。

Homebrewが既に入っているのでbrewでpyenvをインストールしました。

$ brew install pyenv

次に .bash_profile もしくは .zshrc にパスを追加します。

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

最後に環境変数の変更を保存します。

$ source ~/.bash_profile

Python3を入れる

次にpyenvでpythonをインストールするのですが、先日Sierraを入れたてでXCodeが入ってなかったのでエラーが出ました。XCodeをインストールして下記のコマンドを入れましょう。

$ xcode-select --install

で、Python3をインストールします。

$ pyenv install 3.5.1

最後に使用するPythonのバージョンを切り替えます。

$ pyenv global 3.5.1
$ pyenv rehash

これでインタプリタで書籍のサンプルを動かせるようになりました。


使用するライブラリをインストールする

続いて書籍ではさらにNumpyMatplotlibPIL(Python Image Library) というライブラリを使用しているので、そちらをインストールします。 pyenvを入れたらpipというパッケージ管理ツールがインストールされているのでそれを使います。 しかし、何かライブラリを入れようとしたら古いよとエラーが出るので、まずは下記を実行してアップグレードします。

$ pip install --upgrade pip

次にNumpy、Matplotlib、PIL(Python Image Library)をインストールします。

$ pip install numpy
$ pip install matplotlib
$ pip install pillow

Matplotlibは正常にインストールできたように見えて、実際は実行してもグラフが描画されませんでした。 調べてみて下記のファイルを作成したら動作するようになりました。 画像描画バックエンドをデフォルトのものと切り替える必要があるようです。

~/.matplotlib/のディレクトリにmatplotlibrcという拡張子無しのファイルを作成して中身は下記の1行だけを記述しておきます。

backend : TkAgg

これで無事グラフが描画できました。


Atomの中で実行する

エディタでAtomを使用している場合、プラグインのatom-runnerを入れておくとその場でCtrl+Rで実行できるようになります。 黒い画面を開かなくて良くなるので非常に便利です。

またグローバルにバージョン2が入った状態で前述のpyenvでバージョン3を入れた場合、Atomからはグローバルの2が実行されてしまうのでAtom側で環境設定をする必要があります。 config.csonに下記の記述を追加します。

runner:
    scopes:
      python: "python3のパス"

pythonのパスは下記で調べる事ができます。

$ which python3

こちらの記事を参考にさせていただきました。


おまけ:

$ python

を実行したら立ち上がるインタプリタですが、どうやって閉じたらよいのかわからず涙目になりました。 デザイナーが黒い画面を使うとよくやってしまうあるあるだと思っているのですが、今回はCtrl+Dquit()で出る事ができました。


  • 16-11-5 追記: PIL(Python Image Library)の記述を追加しました。
  • 6-11-21 追記: Atomの記述を追加しました。