Configure autoreload for IPython
IPython is truly wonderful for developing with Python. It comes with useful defaults, but one thing I was missing was autoreloading of modules. These answers on stackoverlflow include everything you need but the correct solution for newer versions of IPython (1.1.0 at the time of writing) isn't spelled out in one place, so I had to combine elements of several answers.
What I ended up doing was:
ipython profile create
Then edit ~/.config/ipython/profile_default/ipython_config.py
and add:
c.InteractiveShellApp.extensions = ['autoreload']
c.InteractiveShellApp.exec_lines = ['%autoreload 2']
c.InteractiveShellApp.exec_lines.append('print("Warning: disable autoreload in ipython_config.py to improve performance.")')
You will now be able to load IPython, import a module and have it automatically reload when you make changes to it.