Installing iPython Notebook on a Mac OS X Mountain Lion

Installing iPython Notebook on a Mac OS X Moutain Lion 10.8.1 for Development and Testing

The “Quickstart” is anything but that leaving off details like the recomended dependencies are basically required for a functional notebook. Here is the sequence that worked for me.

[apps]$ mkvirtualenv ipythonvm –distribute
[apps]$ workon ipythonvm

at this point pip freeze shows

[apps]$ pip freeze

next up the big instAll

[apps]$ easy_install ipython[zmq,qtconsole,notebook,test]

the instructions suggest running iptest. Don’t bother yet. It will fail the tests without more dependencies like “nose’ installed. Keep on. Also note the “easy_install” in front of readline is specific to set the sequence to pass the tests. Not sure why. No time to question today and I’m in a VM so it can’t do much harm. Proceed with.

[apps]$ pip install nose
[apps]$ easy_install readline
[apps]$ easy_install pexpect
[apps]$ easy_install ipython[zmq]

At this point checking packages shows

[apps]$ pip freeze


[apps]$ ipython qtconsole

fails. Keep trying.

pip install Tornado

Tornado works, but still errors on ZeroMQ. It comes down to this. We need ZeroMQ and PyZMQ. PyZMQ is installed (see pip freeze lista bove) but is missing the dependencie ZeroMQ doesn’t work with pip or easy_install as far as I can tell. Now we go old school. I also didn’t read the docs and was a bit tired so rather than specifying to intsall in the virtualenv I accepted the defaults and installed it in /usr/local/bin globally.

for ZeroMQ, I downloaded the Mac latest stable release from this page:

On 9/15/2012 I downloaded this one and extracted it:
zeromq-2.2.0.tar.gz 14-Apr-2012 09:53 1.8M

Unpack the .tar.gz source archive and cd into that directory. Remember I installed globally for this one package after the battle so first I had to “deactivate” in the virtual environment I was in (iphythonvm for me). Then change into that directory someplace you have “write” rights. For me I copied it from downloads to “code/contribs” which is where I put random stuff I haven’t modified but may or may not be using. Thus the next command was:

cd zeromq-2.2.0/

Run ./configure, followed by make.

But remember, outside of a VM we are back to sudo so this looks like:

sudo ./configure
sudo make
sudo make install

switch back to my VM

[apps]$ workon ipythonvm

the environment now looks like this:

[apps]$ pip freeze

now we try again.

[apps]$ ipython notebook

Success! Now let’s go get somethign to look at. I created a folder in my apps folder to put the downloads and grabbed a git repository from blogger Titus of Living in an Ivory Basement

mkdir iPythonNotebooks
cd iPythonNotebooks
git clone git://

Now we test it again:

[iPythonNotebooks]$ ipython notebook
[NotebookApp] Using existing profile dir: u’/Users/eschipul/.ipython/profile_default’
[NotebookApp] Serving notebooks from /Users/eschipul/Dropbox/Code/apps/iPythonNotebooks
[NotebookApp] The IPython Notebook is running at:

I then imported the ngs-10-blast notebook. There are codeblocks in the notebook, so for a proof of concept I just picked one that imported “blast” knowing I had not imported it. Inside of Chrome, inside of the notebook, I can click on a codeblock that begins:

import csv
import blastparser

# open the output file for reading
fp = open(‘out.txt’)

and then I select “cell run” and it runs it as if I was in Eclipse. Properly giving an error of

ImportError Traceback (most recent call last)
in ()
1 import csv
—-> 2 import blastparser
4 # open the output file for reading
5 fp = open(‘out.txt’)

ImportError: No module named blastparser

That is huge. Think about it. Running code inline in the middle of a web page with a compiler and debugging. Not javascript by Python in a sandbox that can import modules and do everything else you would do with idyl. And saved in JSON based notebooks that can be shared and used for testing. It sort of blows your mind.

I’m not suggesting this is a replacement for a good training video. But it is a great addition to the educators arsenal of tools for online learning in richer environments with greater interactivity. I’m impressed to say the least.

Other randome take-aways. I did not know about the pexpect package and it is pretty compelling if you work at a company. It removes the need for the C libraries for builds which means that not everyone needs to install xCode if they have to /configure, make, make install, etc.

Thus I recommend you take a look at what pexpect can do as it was new to me. Pretty cool actually.