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 versions gfortran
Warning: brew-versions is unsupported and may be removed soon.
Please use the homebrew-versions tap instead:
4.8.2    git checkout 3c86d2b Library/Formula/gfortran.rb
4.8.1    git checkout 90cb0ee Library/Formula/gfortran.rb
4.8.0    git checkout 0e654f6 Library/Formula/gfortran.rb
4.7.2    git checkout eab11ee Library/Formula/gfortran.rb
4.2.4-5664 git checkout 70c315b Library/Formula/gfortran.rb

4.2.4-5666.3 git checkout 6a79970 Library/Formula/gfortran.rb 
$ git checkout eab11ee /usr/local/Library/Formula/gfortran.rb
brew info gfortrangfortran: stable 4.7.2 (bottled)
Not installed
==> Dependencies
Required: gmp ✔, libmpc ✔, mpfr ✔
==> Options
--check
     Run the make check fortran. This is for maintainers.
--enable-profiled-build
     Make use of profile guided optimization when bootstrapping GCC
==> Caveats
Brews that require a Fortran compiler should not use:
  depends_on 'gfortran'
 
The preferred method of declaring Fortran support is to use:
  def install
    ...
    ENV.fortran
    ...
  end

$ 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 install freetype

brew insatll libpng

で導入できるはずです。

続けてmatplotlibの導入、と行きたい所なのですがfreetypeとlbpngのインストール場所がおかしいバグがあり、これに対応する必要があります。

当方の環境では、ft2build.hとfreetype2が、/usr/X11/includeにに存在しているという問題がありました。そこで、

$ 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にこれらのファイルが存在しているようにします。

他にも、freetypeとlbpngの関連ファイルの位置がおかしい場合があるようなので、その場合は
を参考にすると良さそうです。
ここまで来れば、matplotlibを導入できます。pip3 install matplotlibで導入しましょう。
追記: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でインストールしましょう。 

 
 
ここまでで、python3の基本的な環境構築はおしまいです。実際にはこの後開発を楽にするsublime text2などを導入したのです、それについてはまた記事を改めたいと思います。