Herding IPython Notebooks February 27, 2014

I’ve recently been using IPython Notebook a lot. Enough that, if it was a chemical substance, people might be thinking about staging an intervention.

It’s the ideal tool for a lot of the work I end up doing – ad-hoc data analysis (and conversion), illustrated examples of techniques, coaching/training, and so on.

One issue that it currently has (at least in the stable v1 series) is that you run an ipython notebook in a directory, and that lets you see all your notebooks just in that directory. This is actually really nice for keeping your work separate; keep a few notepads for python experiments in a private repo, keep the notepads you’re using for a given work project in another, and so on.

However, I hit the situation enough that I hopped into a directory of notebooks and wondered ‘am I already running a notebook server here?’ that I created a quick tool, that I share with you, dear reader.

You can grab nblist from as a gist, and drop it in an executable directory.

It allows you to do

$ nblist
    http://127.0.0.1:8088 | /Users/me/work/notebooks
    http://127.0.0.1:8089 | /Users/me/work/otherproject
    http://127.0.0.1:8090 | /Users/me/work/employer/thirdproject

in a terminal. Bonus tip: ⌘–click on a URL in Terminal.app will open it in the default system browser.

Update 2014-08-22: My original version of nblist was OSX only and depended on scraping through processes, looking at their environments, and checking which had open ports –which worked, but was janky. Thanks to some feedback from Thomas Kluyver on the mailing list, it’s been improved so it will work on all POSIX systems using techniques that will be exposed in IPython 3.x.