ipython
uses a separate thread to save command history. Because gevent
patches threading methods, that pre-existing separate thread triggers the gevent 'single thread' exception.
I would not use gevent in ipython
; ipython
is not compatible with gevent.
At the very least, try to patch out fewer things; try gevent.monkey.patch_all(thread=False)
and see if fewer things in ipython
break.