old school magic

機械学習と統計とプログラミングについてちょっとずつ勉強していきます。

OS X Mavericksにpython3.3/numpy/scipy/matplotlib/scikit-learnをインストールする

この記事は古くなっています。
最新版の記事はこちらになります。


MacでPythonの機械学習環境構築(2015年2月版) - old school magic


内容はタイトル通りです。
OS X Mavericksにアップデートしてpython関係のインストールがうまく行かなくなった方に参考になれば嬉しいです。(python3に関してはあんまりMavericks関係ないかも。)

pythonは2系と3系を両方使いたいので、Homebrewを使ってインストールします。

  • 公式

Homebrew — The missing package manager for OS X

  • インストール、使い方

MacOSX - パッケージ管理システム Homebrew - Qiita

  • アンインストール

Homebrewのアンインストールと再インストール: 黄昏てなんかいられない

Home · Homebrew/homebrew Wiki · GitHub

# python3のインストール
brew install python3

brewを使ってインストールすると、pipsetuptoolsも入ってきて大変楽です。
brewでインストールした場合python3系のコマンドは後ろに3が付きます。
(2系はそのまま)

scipygfortranに依存してるので先にインストールします

# gfortranのインストール
brew install gfortran

numpy/scipybrewにあるパッケージは2系なので
(訂正 : brew searchしてみたら2系のnumpy/scipyはHomebrewになかったです...あれー...?)


pipでnumpy/scipyをインストールします。

# numpyのインストール
pip3 install numpy

# scipyのインストール
pip3 install scipy

で次にmatplotlibをインストールするのですが、前はここでこけました。
macでPython3のmatplotlibを導入出来ませんでした - old school magic

とりあえずmatplotlibにはfreetypelibpngというパッケージが必要なのでインストール。

# freetypeのインストール
brew install freetype 

# libpngのインストール(おそらく上のコマンドですでにインストールされてる)
brew install libpng

ですがこのままmatplotlibをインストールしようとするとエラーが出ます。
(コンパイルしたけどfreetypeが見つからなかったよ!ってエラーです)

ピンポイントでStack Overflowに同じ質問ありました。
python - Unable to install matplotlib on Mac OS X - Stack Overflow

要するにfreetypeやlibpngがXCodeコマンドラインツールによって変なところにインストールされちゃってるのが原因みたいです。(何故か/usr/X11/以下にインストールされてます。)

というわけで(/usr/local/に)リンクします。

# 魔法の言葉
sudo mkdir -p /usr/local/include
sudo ln -s /usr/X11/include/freetype2/freetype /usr/local/include/freetype
sudo ln -s /usr/X11/include/ft2build.h /usr/local/include/ft2build.h
sudo ln -s /usr/X11/include/png.h /usr/local/include/png.h
sudo ln -s /usr/X11/include/pngconf.h /usr/local/include/pngconf.h
sudo ln -s /usr/X11/include/pnglibconf.h /usr/local/include/pnglibconf.h
sudo mkdir -p /usr/local/lib
sudo ln -s /usr/X11/lib/libfreetype.dylib /usr/local/lib/libfreetype.dylib
sudo ln -s /usr/X11/lib/libpng.dylib /usr/local/lib/libpng.dylib

そしてmatplotlibscikit-learnをインストールして完了!

# インストール成功!
pip3 install matplotlib

# scikit-learnのインストール
pip3 install scikit-learn 

補足

gfortran入れるの忘れると、

Library not loaded: /usr/local/Cellar/gfortran/4.8.2/gfortran/lib/libgfortran.3.dylib
  Referenced from: /usr/local/lib/python3.3/site-packages/scipy/special/_ufuncs.so
  Reason: image not found  

って感じのエラーが出ます。

あとbrewでpython3を入れると

Setuptools and Pip have been installed. To update them
  pip3 install --upgrade setuptools
  pip3 install --upgrade pip

To symlink "Idle 3" and the "Python Launcher 3" to ~/Applications
  `brew linkapps`

You can install Python packages with
  `pip3 install <your_favorite_package>`

They will install into the site-package directory
  /usr/local/lib/python3.3/site-packages

See: https://github.com/mxcl/homebrew/wiki/Homebrew-and-Python

って感じでSetuptoolsとPipも入れたよ!ってメッセージが出ます。

感想

コンパイルエラーに対処できるようになりたいです...