2017-09-14 1 views
0

Je souhaite masquer les retraçages dans mon code Python dans les blocs-notes Jupyter, afin que seuls le type d'erreur et le message s'affichent.Comment supprimer les retraçages dans Jupyter?

This answer suggère sys.tracebacklimit = 0 mais en essayant qui a donné les éléments suivants:

 
ERROR:root:Internal Python error in the inspect module. 
Below is the traceback from this internal error. 

ERROR:root:Internal Python error in the inspect module. 
Below is the traceback from this internal error. 

Traceback (most recent call last): 
AssertionError 
Traceback (most recent call last): 
AssertionError 

Cette réponse suggère également de remplacer sys.excepthook avec une fonction personnalisée, mais le retraçage était encore affiché.

Comment cacher le retraçage?

Répondre

0

J'ai trouvé deux façons de le faire, les deux impliquant IPython monkeypatching.

# 1. Cela affichera uniquement le type d'exception et le message, mais surlignés en rouge dans la zone de sortie:

from __future__ import print_function # for python 2 compatibility 
import sys 
ipython = get_ipython() 

def exception_handler(exception_type, exception, traceback): 
    print("%s: %s" % (exception_type.__name__, exception), file=sys.stderr) 

ipython._showtraceback = exception_handler 

# 2. Cela générera l'exception et le code de couleur le type d'exception (comme le fait normalement Jupyter, mais sans traceback):

import sys 
ipython = get_ipython() 

def hide_traceback(exc_tuple=None, filename=None, tb_offset=None, 
        exception_only=False, running_compiled_code=False): 
    etype, value, tb = sys.exc_info() 
    return ipython._showtraceback(etype, value, ipython.InteractiveTB.get_exception_only(etype, value)) 

ipython.showtraceback = hide_traceback