Python on OS X

個人的には、Linux ディストリビューションネイティブの、(バイナリがある、網羅的である、活発である、などの)well-managedと言って良いパッケージマネージャならともかく、 若干そうではない(ある程度網羅的で活発ではあるが、バイナリが網羅的でない)Homebrewで重たいパッケージを入れたくはないという気持ちがあった。
そこで、今までは公式パッケージを用いていたのだけれど、 2.7.7が出たかと思ったら、一ヶ月ぐらいでもう2.7.8が出たのにめんどくささを感じたのと、 OpenCV含め、他の「重たい」ライブラリとの組み合わせ管理を楽にしたいという思いから、HomebrewでPythonをインストールすることにした。
結論からいうと、良さそう。
OSノンネイティブのパッケージマネージャでheavyなソフトのインストールというと、Macports時代の印象からか、 OSにあるものと同じだがバージョンが違うライブラリのようなものをモリモリインストールされ、 さらにそれらが全てソースからコンパイルするから死ぬような目に遭う、みたな印象があったのだけれど、
$ brew deps python
gdbm
makedepend
openssl
pkg-config
readline
sqlite
これだけしかないし、
brew info python
python: stable 2.7.8 (bottled), HEAD
http://www.python.org
/usr/local/Cellar/python/2.7.8 (4654 files, 74M) *
  Poured from bottle
バイナリからインストールできる(bottle)。
おまけに、pipまでまとめてインストールしてくれるから、とても気が利いている。
さらに、HomebrewにはPython用のtapも用意されていて、 これを使うと、Apple Accelerate Framework (Intel MKLのApple版みたいなイメージ?)を使ってコンパイルできるらしい。
以下が、単純なスピードテストを実行した結果。
import timeit, numpy, scipy
t = timeit.Timer("np.dot(A,B)","import numpy as np;N=5000;A=np.random.random((N,N));B=np.random.random((N,N))")
print t.timeit(number=5)/5
  • brewed numpy
    • 9.751796388626099
  • pip numpy
    • 13.715973615646362 14.209917974472045
brew版のほうが速い。
その他、Homebrew における Python のハウツーについては、公式Wikiのページが有益そう。