vagrantにIPython Notebook serverを立ちあげる

IPython Notebook、インストールに悪戦苦闘した記憶しかなくてなんとなく敬遠してたんですが、 RStudioのようにServerとして立ち上げてブラウザでアクセスできる、と知りました(今更!)。

手元のvagrantUbuntu 14.04)にIPython Notebookをインストールしてみたのでメモ。

IPython 3.0

安定板は2.3系なんですが、今開発中の3.0がすごいらしいので、あえてこっちをインストールしてみます。

Vagrantfileにポートフォワーの設定を追加

IPython Notebookはデフォルトでは8888番ポートを使うので、そのポートに外からアクセスできるようにポートフォワードを設定します。ここではhost側も仮に8888にしていますが、任意のポートで大丈夫です。また、IPython Notebook側もプロファイルを変更すれば別のポートを使えます。

  config.vm.network "forwarded_port", guest: 8888, host: 8888

依存パッケージをインストール

いちどパッケージ版のIPythonapt-get installしてそれをapt-get removepurgeではなく)することで依存パッケージだけ残す、という荒業があるようです。なんと。

How to install the development version of IPython Qtconsole and Notebook in Ubuntu | Aaron Meurer's SymPy Blog

sudo apt-get install ipython-notebook ipython-qtconsole
sudo apt-get remove ipython-notebook ipython-qtconsole ipython

IPythonをインストール

gitとpipを入れておきます。

sudo apt-get install git python-pip

ipython/ipython · GitHubに書いてある手順ではcloneしたレポジトリをそのままpip installする流れになってますが、なぜか手元では動きませんでした。3.0.0-devのタグをチェックアウトすると動いたのでそうしてますが、正しい手順なのかは謎です。。

git clone --recursive git://github.com/ipython/ipython.git
cd ipython
git checkout 3.0.0-dev
git submodule update
sudo pip install -e ".[notebook]"

IPython Notebookの設定

外からアクセスできるようにプロファイルを追加します。デフォルトのプロファイルをいじっても構いません。その場合はパスがprofile_defaultになります。

ipython profile create nbserver
vi $HOME/.ipython/profile_nbserver/ipython_config.py

以下のように、NotebookApp.ipの設定を追加します。(これ10.0.0.0/8みたいな指定の仕方ができるといいんですけど、どうもできないっぽい)

# The IP address the notebook server will listen on.
# c.NotebookApp.ip = u''
c.NotebookApp.ip = u'*'

IPython Notebookを起動

先ほど作成したプロファイルを指定して起動します。デフォルトだとVM上で立ち上げようとしてしまいますが必要ないので、--no-browserもつけます。

ipython notebook --profile=nbserver --no-browser

IPython Notebookにアクセス

http://127.0.0.1:8888/を開くとnotebookが見えているはずです。おわり。

f:id:yutannihilation:20141220225949p:plain

注意点

これは純粋にIPython Notebookをインストールしただけなので、numpyとかmatplotlibとかは入ってません。そこはまた依存性地獄を潜り抜ける必要があります。。もうちょっとお手軽にならないものか。