假设你有这些模块:
模块1.py
import module2
def a():
module1.b()
def c():
print "Hi guys!"
模块2.py
import module1
def b():
module1.c()
我想要一个func(a())
产生与此类似的输出的函数: (=a 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!"
traceback
标准模块和/或cgitb
和/或可能有可能,inspect
但我很难从文档中找出这些模块。
我认为这是可能的,traceback.print_stack(a())
但由于某种原因它只是一直在加载。我在这些模块中尝试了其他功能,但没有成功。
更新 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()')
现在当我这样做时:
python trapy_module.py
我得到:
--- modulename: trapy, funcname: <module>
<string>(1):
替换import random
为import pyglet
和只是继续运行而不输出任何内容random.random()
。pyglet.app.run()