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も入れたよ!ってメッセージが出ます。

感想

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