É uma prática muito melhor evitar o uso de sys.exit () e, em vez disso, gerar / manipular exceções para permitir que o programa termine corretamente. Se você deseja desativar o traceback, basta usar:
sys.trackbacklimit=0
Você pode definir isso na parte superior do seu script para compactar toda a saída do traceback, mas eu prefiro usá-la com mais moderação, por exemplo, "erros conhecidos" onde eu quero que a saída fique limpa, por exemplo, no arquivo foo.py:
import sys
from subprocess import *
try:
check_call([ 'uptime', '--help' ])
except CalledProcessError:
sys.tracebacklimit=0
print "Process failed"
raise
print "This message should never follow an error."
Se CalledProcessError for capturado, a saída será semelhante a esta:
[me@test01 dev]$ ./foo.py
usage: uptime [-V]
-V display version
Process failed
subprocess.CalledProcessError: Command '['uptime', '--help']' returned non-zero exit status 1
Se ocorrer outro erro, ainda obteremos a saída completa do traceback.