Einen Python-Traceback ohne Ausnahme erhalten

Angenommen, Sie haben diese Module:

module1.py
import module2

def a():
    module1.b()

def c():
    print "Hi guys!"
module2.py
import module1

def b():
    module1.c()

Ich möchte eine Funktionfunc(a()) das erzeugt eine ähnliche Ausgabe wie diese: (= ein Traceback?)

 /usr/local/lib/python2.7/dist-packages/test/module1.py
   3 def a():
   4     module1.b()

   1 import module1

 /usr/local/lib/python2.7/dist-packages/test/module2.py
   3 def b():
   4     module1.c()

   1 import module2

 /usr/local/lib/python2.7/dist-packages/test/module1.py
   6 def c():
   7     print "Hi guys!"

Möglicherweise ist dies mit den Standardmodulen möglichtraceback und / odercgitb und / oderinspect Es fällt mir jedoch schwer, diese Module aus der Dokumentation herauszufinden.

Ich dachte, das wäre möglichtraceback.print_stack(a()) aber es wurde aus irgendeinem Grund für immer geladen. Ich habe andere Funktionen in diesen Modulen ausprobiert, aber ohne Erfolg.

UPDATE 3

@jterrace

python trapy_module.py:

import trace

def trapy(arg):
    tracer = trace.Trace()
    tracer.run(arg)
    r = tracer.results()
    r.write_results()

if __name__ == '__main__':
    import random
    trapy('random.random()')

Nun, wenn ich es tue:python trapy_module.py Ich bekomme:

--- modulename: trapy, funcname: <module>
<string>(1): 

Ersetzenimport random mitimport pyglet undrandom.random() mitpyglet.app.run() läuft einfach weiter, ohne etwas auszugeben.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage