ipython notebookとは

ざっくり言うとiPythonをweb browser上で動かせるやつ。(参考: ipythonとは)

今はpythonだけじゃなくてRとかRubyとか他言語もいろいろ動かせるらしく、名前もipython notebookから、Jupyterになった。JupiterじゃなくてJu”py”terなのがキモ。

入力した式をinlineでグラフ表示したり、その状態を保存しておくことができる機能が使いたかったので、環境をつくってみた。 いろいろ必要なライブラリがあって、どんどんローカル環境に入れていくと、あとからつらくなりそうだなと思ってvagrantでつくってpackageにまとめたメモ。

下に貼った画像みたいに、グラフを見つつブラウザで試しながら、修正してすぐ反映できるツールである。ファイルは拡張子 .ipynb で保存できて、一ヶ月くらい前からgithubでもサポートされるようになってていい感じ。(参考 : Rendering Notebooks on GitHub )

公式

ベースになる vagrantのserverを用意する

vagrant box es から、今回はOfficial Ubuntu 14.04 daily Cloud Image amd64 を使う。まあなんでもいいとおもう。

$ vagrant box add ubuntu-14 https://cloud-images.ubuntu.com/vagrant/trusty/current/trusty-server-cloudimg-amd64-vagrant-disk1.box
$ vagrant init ubuntu-14
$ vagrant up
$ vagrant ssh
$ sudo apt-get update   # @vagrant
$ sudo apt-get upgrade  # @vagrant

ipython notebook (jupyter)のインストール

pipでipythonをまずインストール

$ pip install ipython   # @vagrant

次に計算とか描画のためのライブラリを、”Anaconda”ごと入れる。

公式からAnaconda の インストーラーを落としてきて実行する。(Anacondaで入るもの)

$ bash ./Anaconda-2.2.0-Linux-x86_64.sh
$ conda update conda
$ conda update ipython ipython-notebook ipython-qtconsole matplotlib

ipythonの起動

$ ipython notebook --no-browser

オプションno browserをつけないと、w3mが立ち上がるので。

localのブラウザから確認

Vagrantfileの”forwarded_port”で設定すれば、デフォルトのport 8888で、http://localhost:8888/ からipython notebook が使えるはずだったが、うまくいかない。

一度vagrant のサーバーから出て、以下のコマンドで入りなおしてipythonを起動して確認できた。

$ vagrant ssh -- -L 8888:localhost:8888

(参考: vagrantで作ったVMでipython notebookを立ち上げてローカルからアクセスする )

環境をvagrant box にまとめる

vagrantのサーバーから出て、packageコマンドでpackageにしたところ、容量が1.4GBになったので、削りたい。 やったことは以下。

$ sudo umount /vagrant     # 共有フォルダを unmount
$ sudo apt-get autoclean   # apt の cacheクリア
$ dd if=/dev/zero of=zero bs=1M # zeroで埋める
$ rm -f zero
$ rm ~/.bash_history       # 履歴削除

( 参考: Vagrant用のboxファイルを小さくする )

改めてpackage したところ、990Mで2/3ぐらいになってよかった。

$ vagrant package

はまったところ

ブラウザから確認できない

  • 前述の通り、vagrant ssh -- -L 8888:localhost:8888 でvagrantに入って、ipython notebookを起動

matplotlibを使ってグラフを描くと、libpng15が無いエラーが出る

  • エラー内容
 ImportError: libpng15.so.15: cannot open shared object file: No such file or directory

matplotlibをanacondaからupdateして、問題を解消した。

$ conda update matplotlib