これが結構手こずった。
Homebrewを使ってインストールされている方は多いみたいだけど、もともと僕はbrewつかっていなくて、このためだけにインストールするのもなぁ。。。と思い、また、皆さんPythonそのものをbrewでインストールしていてそれもなんかなぁという気がしたのでMacOSXにもともとbundleされてるpythonの処理系つかってインストールできないか試してみた。
以下は僕がやったメモ。
1、pipをeasy_installなどを使ってインストール
この工程必要だったかな?とりあえずpipが使える環境だったらOKだと思う。
2、pipでipythonをインストール
$ sudo pip install ipython
このときに--userをオプションとして渡すとそれぞれのユーザ領域にインストールされるのでsudoする必要がなくなる。
3、scipyのインストール
http://akiyoko.hatenablog.jp/entry/2013/06/15/140101を参考にさせていただきました。たしかnumpyのアップデートとかはせずにやってみたけれど今のところ困っていない気がする。うまくいかなければアップデートすれば良いかと思います。
4、一回pipでmatplotlibのインストールを試みる。
$ pip install matplotlib --user
ここでインストールが成功するならはいおめでとうございます終了なわけだが、多分freetypeが無いだとかlibpngが無いだとかそんな感じの事言って怒られます。
で、それらのソースをとってきてローカル領域にビルド・インストールしてみたんだけどどうもうまく行かない。ちなみにlibpngをインストールしてみると、その後OSXのopenコマンドとかもよく分からないtrapに遭ってしまい困ったので僕はアンインストールしました。
その後で知ったのだけど、実はlibpngやlibfreetypeはもとから/usr/X11/libにインストールされている。一方で、これらのバージョン確認などには普通同じprefixのbinディレクトリ、すなわち今回の場合だと/usr/X11/bin/のなかにあるlibpng-configやfreetype-configなどのコマンドをつかうのだけど、Mauntain Lionの初期の状態ではls -lしてみればわかるんだが、実はこれらのバイナリに見えるものは全てxstubという「X11はもうバンドルしなくなったんで自前で頑張ってね」みたいなメッセージを表示するだけのプログラムへのシンボリックリンクになっている。これを解決するために、XQuartzをインストールすることになった。
5、XQuartzのインストール
ここからdmgをダウンロードしてきて、マウント&pkgをインストールする。この作業は多分迷わないと思う。
これが成功すると、
/usr/X11/bin% ls -l total 53624 lrwxr-xr-x 1 tromso wheel 7 8 24 01:46 X -> Xquartz -rwxr-xr-x 1 root wheel 2880864 9 28 2012 Xephyr -rwxr-xr-x 1 root wheel 2975728 9 28 2012 Xfake -rwxr-xr-x 1 root wheel 2590624 9 28 2012 Xnest -rwxr-xr-x 1 root wheel 3700608 9 28 2012 Xorg -rwxr-xr-x 1 root wheel 62336 9 28 2012 Xquartz -rwxr-xr-x 1 root wheel 2912624 9 28 2012 Xvfb -rwxr-xr-x 1 root wheel 43824 9 28 2012 appres -rwxr-xr-x 1 root wheel 51936 9 28 2012 atobm -rwxr-xr-x 1 root wheel 43312 9 28 2012 bdftopcf ・・・以下省略
みたいにバイナリの実体で置き換えられている。さらに/usr/X11/includeなどのディレクトリができてヘッダファイルもインストールされているはず。
6、もう一回pipでインストール(3と同様の手順)
多分includeするヘッダが見つからないというエラーがでる。エラーのログを間違って消しちゃったのでお見せできない(すみません)が多分エラー吐かれる。もし成功した人はおめでとうございますなんだけど多分/usr/X11/include/ft2build.hのなかで
/* `<prefix>/include/freetype2' must be in your current inclusion path */ #include <freetype/config/ftheader.h>
この部分でftheader.hが見つからないってエラーが返ってくるんじゃないかと思う。
実はこのヘッダのパスは、/usr/X11/include/freetype2/freetype/config/ftheader.hとなるようになっている。一個余分(?)なディレクトリを経由するのだ!なので、インクルードパスに/usr/X11/include/freetype2/までがはいるようにする必要がある。
ちなみに、ここの部分に関しては僕はここを参考にした。
ここと同様に、
$ export LDFLAGS=-L/usr/X11/lib $ export CFLAGS="-I/usr/X11/include -I/usr/X11/include/freetype2 -I/usr/X11/include/libpng15" $ pip install matplotlib --user
とした。ちなみに、libpngまわりのpng.hは/usr/X11/include/libpng15の中だったりlibpng12の中だったりとバージョンによって違うみたいなので、そこはCFLAGSを設定する際に確認する事が重要。これで完成した。
とりあえずipython pylabとして起動するなり、ipython起動した後でimport matplotlibとかして怒られなければ成功です。