I've been a Python developer for more than ten years. Approximately 98% of the time I need to debug something I use print() statements and this:
import IPython; IPython.embed() import IPython; IPython.embed()For stepping through code, I agree with your other comments that it is often too much for debugging. To recreate it when really necessary, I might sprinkle a handful of embed calls
import pudb; pudb.set_trace() import pudb; pu.db
for the impatient typist.IPython pdb session.