import sys class ExceptionHook: instance = None def __call__(self, type, value, tb): if self.instance is None: if hasattr(sys, 'ps1') or not sys.stderr.isatty(): sys.__excepthook__(type, value, tb) else: import traceback # from IPython.core import ultratb # self.instance = ultratb.FormattedTB(mode='Plain', # color_scheme='Linux', call_pdb=1) import pudb traceback.print_exception(type, value, tb) pudb.post_mortem(tb) sys.excepthook = ExceptionHook()