MacOSXでのPython3環境構築
Mac OS X 10.9および10.6でPython3用の環境を構築する
Xcodeおよびhomebrewを導入する
まずは、準備作業です。この作業は今回の説明の本筋ではないので割愛します。
当方の環境では、OS X10.9の方にはXcode 5.02、OS X10.6の方ではXcode4.02を使用しております。command line toolも入れることに注意してください。
Python3を導入する
homebrewでpython3を導入する。インストールコマンドはbrew install (パッケージ名)となっています。
この際、当方の環境ではswigがエラーを起こしたので、これをhomebrewで--with-python3オプションを付けて再インストールしておきます。
また、python3をインストールする際には、--frameworkオプションを付けておくと良いらしいです。
ipythonを導入する
続いて、pythonをより便利に使えるshellであるipyhonを導入します。まず、依存関係にある各種ツールを入れていきます。
最初に、homebrewでzmqでを導入します。さらにpython3付属のパッケジ管理ツールのpip3を使って、pyzmq、tornado、Pygmentsを導入します。インストールコマンドはpip3 install (パッケージ名)になっています。
ここで、brew install readlineとコマンドを打ってみてください。おそらくpython3を導入した時の依存関係で導入されているはずですが、OS Xのipythonにはreadlineが必要という報告がなされているので、確認が必要です。
ここまでの導入が済んだら、いよいよipythonを入れていきます。pip3 install ipythonでpython3用のipythonが導入されるはずです。
(注意:ここで導入したipythonはCUIモードは問題なく動作しますが、GUIモードが上手く動作しません。これは後述のQt4及びpyqtの導入によって解決します。)
Numpyの導入
pythonの数値計算用モジュールであるnumpyをpython3に導入します。pip3 insatll numpyで問題なくインストールされるはずです。
Scipyの導入
pythonの科学計算用モジュールであるscipyを導入します。scipyは計算を高速化するためなのかFortranのコードを内部的に使用しているらしく、導入にはFortranコンパイラを導入する必要があります。
homebrewでgfortranを導入します。ここで、OS X 10.6を使用している場合には、インストールエラーが起きます。
これは、最新のgfortranがOS X10.6に対応していないからです。(さすがのsnow leopardも、もう古いんですかね?)
この問題を回避する為に、homebrewで導入するgfortranのバージョンを4.7.2に下げます。
$ brew install gfortran
上記のようにgit checkoutを用いて指定したバージョンのパッケージをhomebrewで入れる事が可能です。
gfortranを入れ終えたらいよいよscipyの導入です。pip3 install scipyでインストールできます。
Qtおよびpyqtの導入
ipythonのGUIモードと後述のmatplotlibのためのQtとpyqtを導入していきます。現在、Qtの最新バージョンは5.2であり、pyqtもQt5に対応したpyqt5がパッケージとして登録されていますが、現在OS X 10.9ではQt5をhomebrewで導入するとコンパイルの際にlibc++とlibstdc++の両方を用いてしまうバグがあり、libc++を持ちているpyqt5との間でエラーが発生してしまいます。また当方の環境ではOS X 10.6でも、pyqt5を導入しようとするとコンパイルエラーを起こしてしまいました。
そこで、今回はQt4とpyqt(4.10.3)を導入します。まず、Qt4の導入です。brew install qtでインストールできます。ただし、この際に注意する事があります。homebrewのqtはsipに依存しているのですが、このsipをpython3に対応させておく必要があります。brew install sip --with-python3でpython3対応のsipを導入できます。しかる後に、brew install qtでQtを導入してください。
続いて、pyqtを導入します。pyqtにもpython3対応用オプション--with-python3があるので、導入の際には必ずこのオプションを付けるようにしてください。(brew install pyqt --with-python3)
ここまで、進むとGUI対応のipython3が使えるはずです。ipython3 qtconsoleで起動してみてください。(本来はさらにipython3 notebookでブラウザ上でipython3を使えるはずなのですが、当方の環境ではエラーが発生してしまいました。)
追記:12月24日
ipython3 notebookが使えなかったのは、jinja2というパッケージが入っていなかったからだということがわかりました。ですので、pip3 install jinja2とターミナルでコマンドを実行すると、ipython3 notebookが使用できるようになります。
matplotlibの導入(OS X 10.9のみ)
いよいよpythonの環境構築も終盤です。pythonで様々なグラフ描画を行えるようにするモジュールであるmatplotlibを導入していきます。まず、matplotlibが依存しているfreetypeとlibpngをhomebrewで導入します。
brew insatll libpng
で導入できるはずです。
続けてmatplotlibの導入、と行きたい所なのですがfreetypeとlbpngのインストール場所がおかしいバグがあり、これに対応する必要があります。
$ sudo ln -s /usr/X11/include/ft2build.h /usr/local/include/ft2build.h
$ sudo ln -s /usr/X11/include/freetype2/freetype /usr/local/include/freetype
以上のようにシンボリックリンクを張って、/usr/local/includeにこれらのファイルが存在しているようにします。
追記:12月25日
OS X 10.6でのインストールも出来たので追記しておきます。基本的な手順はほとんど同じですが、OS X 10.6ではfreetypeとlibpngの関連ファイルのリンク手順が多くなります。参考URLの記事に記載されている全てのファイルについて、/usr/local/includeと/usr/local/lib以下にリンクすればOKです。ただし、この際にpnglibconf.hが見当たりませんでしたので、/usr/local/Cellar/libpng/(バージョン番号)/includeからシンボリックリンクを張ります。
これでpip3 install matplotlibっと行きたいところなのですが、当方の環境では、matplotlibが依存しているnoseというパッケージがインストール時に管理者権限を要求しエラーとなってしまいました。
そこで先にnoseをインストールしてしまいます。sudo pip3 install noseで問題なくインストールできるはずです。
ここまでやってようやくmatplotlibをインストールできます。pip3 install matplotlibでインストールしましょう。