【发布时间】:2012-06-14 16:11:20
【问题描述】:
假设你有这些模块:
module1.py
>import module2
def a():
module1.b()
def c():
print "Hi guys!"
module2.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() 只是继续运行而不输出任何内容。
【问题讨论】:
-
ITYM
module2.b()或from module2 import b。
标签: python stack-trace pretty-print