Python matplotlibの導入がアレだった件
状況:
ソースビルドしたPython2.7 (--prefix=$HOME/local)
複雑ネットワークの解析とかちょっとした可視化はnetworkxとmatplotlibを使うと楽チンで良い.
virtualenvで$HOME/python2.7に環境作ってpipでnetworkxとmatplotlibを入れようとしたときのハマりログ.
(OS: fedora13 x86_64)
networkxをpipでインストール
$ pip install networkx
これは問題なし、次にmatplotlibのインストール
$ pip install matplotlib
$HOME/python2.7/build/以下にあるmatplotlibのソース内, mpiutils.cppで"vsprintf が undeclaredだよ"というエラー.
いやいや, iostreamとcstdargがちゃんとincludeされてるじゃないすか…
しかたなくiostream → stdio.h, cstdarg → stdarg.h に書き換え.
もういっちょ, ttconv/truetype.h で "FILE なんて知りません" というエラー.
#include
これで表向き, matplotlibのインストールは成功するが、
import matplotlib.pylab
で, "numpy.core.maが見つかりません"というエラー.
pipで入れたnumpyは 1.6.0 なので旧バージョンと今とでは, maモジュールの配置が変わってる.(numpy.core.ma → numpy.ma)
というわけでsite-packages/以下の
matplotlib/numerix/ma/__init__.py
matplotlib/numerix/npyma/__init__.py
のソース内で
"from numpy.core.ma import *" → "from numpy.ma import *"
と修正.
これでnetworkxとmatplotlibを使った簡単なサンプルはすべて動いた.