Note: I am asking this question after researching how to actually do it. Other questions which are somewhat similar, but actually differ from my question relate to:
You could use the IPython coloring. Just put this at the beginning of your program. Every exception will be then handled by ultratb and be displayed in color and also show the locals() values for the code snippet that made the exception.
import sys
from IPython.core import ultratb
sys.excepthook = ultratb.FormattedTB(mode='Verbose', color_scheme='Linux', call_pdb=False)
This will work even if you invoke your script with the vanilla python interpreter.