matsulibの日記

Ingredients as Code

numpyとmatplotlibのインストール

lubuntu 12.10にnumpyとmatplotlibをpipを使ってインストールをしようとしてつまった。以前、それらをubuntuにインストールしたときにはこんな苦労をした覚えがないのだけど…そのときは必要なファイルが全部揃っていたのだろう。
まず、numpyをインストールするために

sudo pip install numpy

とすると"SystemError: Cannot compile 'Python.h'. Perhaps you need to install python-dev|python-devel."とか「Python.h: そのようなファイルやディレクトリはありません」と注意され出鼻をくじかれた。
必要なファイルはエラーメッセージを読んだりググったりすれば見つかるが、その後も事あるごとに「src/ft2font.h:16:22: 致命的エラー: ft2build.h: そのようなファイルやディレクトリはありません」だの「png.h: そのようなファイルやディレクトリはありません」だのとしつこく怒られまくって心が折れそうになった。
ということで、とりあえず手元の環境で上手くいった方法をまとめる。
[追記] Linux Mint 16 Xfceではこれだけじゃビルドできなかった。原因は特定できてないけど、とりあえずgfortranとg++をインストールしたらビルドできた。

sudo apt-get install python2.7-dev libpng-dev libfreetype6-dev
sudo apt-get install libgtk2.0-dev
sudo apt-get install python-gtk2-dev
sudo pip install numpy
sudo pip install matplotlib

特に見落としていたのがインストールの順番。PyGTK関連のパッケージ(libgtk2.0-dev, python-gtk2-dev)をインストールしなくてもmatplotlibのインストールは成功する。しかし、図をウインドウに表示しようとすると"ImportError: No module named _backend_gdk"というエラーが出る(画像ファイルとして保存することはできる)。このエラーを見たあとにPyGTKをインストールしても認識してくれない。だから必要なオプションはmatplotlibより先にインストールすること。間違ってmatplotlibを先にインストールしてしまったら

sudo pip uninstall matplotlib

で一旦消してからもう一度インストールする。

もう一つ困ったのは、エラーや警告メッセージで提示してくれる依存関係のファイル名。それのインストール方法がaptなのかpipなのか(初心者には)判断できないし、全く別の名前のパッケージに入っているのも混乱の原因だった。どういうコマンドでインストールするのか書いてほしい。実際にはインストール方法はaptとpipだけじゃなく、その他にも色々あるわけで如何ともしがたい問題だろうけど。


おまけ
matplotlibをipython上で使う人が多いだろうが、ipythonにソースコードをコピペするとインデントがずれる。そのために %paste という特殊なコマンドが用意されているのだけど、これはTkinterがインストールされていないと機能しない。エラーメッセージがこれ。

In [1]: %paste
ERROR: Getting text from the clipboard on this platform requires Tkinter.

でもインストールのコマンドは、apt-get install Tkinter でも pip install Tkinter でもなく、

sudo apt-get install python-tk

だった。どうなのこれ。
※ipython QtConsoleならそのままコピペしてもインデントは崩れない上にペーストしたものを再編集してから実行できる。さらにシンタックスハイライトもされるのでおすすめ。



参考になった記事
・pipでインストール中にエラー「Python.h: そのようなファイルやディレクトリはありません」
http://zashikiro.hateblo.jp/entry/2012/10/02/130031
・[小ネタ][Python]Ubuntu 12.04にpipでmatplotlibを入れようとしたら詰まった件
http://d.hatena.ne.jp/fuyumi3/20130110/1357822922
・「魔法少女まどか☆マギカ」の台詞をNLTK(Natural Language Toolkit)で解析する
http://d.hatena.ne.jp/yutakikuchi/20111231/1325310004
Ubuntu 10.04でのGTK+のインストール
http://d.hatena.ne.jp/SO2_2009/20100610/1276188196
linux - how to set 'backend' in matplotlib in python - Stack Overflow
http://stackoverflow.com/questions/4930524/how-to-set-backend-in-matplotlib-in-python
・忘れるので Pythonを勉強してみる(つもり)
http://savannahmonitor.blog10.fc2.com/blog-entry-58.html
・Installation — Matplotlib 1.2.0 documentation
http://matplotlib.org/faq/installing_faq.html#installation
・Customizing matplotlib — Matplotlib 1.2.0 documentation
http://matplotlib.org/users/customizing.html#customizing-matplotlib