您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

在Python跟踪中查找完整路径名

在Python跟踪中查找完整路径名

如果trace.py允许打补丁,此任务很容易。

复制trace.py(从/usr/lib/python2.7/我的情况而言)到本地目录(例如当前目录),然后modname(path)在该本地副本中修补该功能。该函数将目录从模块路径中删除,因此包信息会丢失。原始包含行

filename, ext = os.path.splitext(base)

可以更改为

filename, ext = os.path.splitext(path)

为了 删除目录。

呼叫的输出./trace.py --trace t.py如下所示:

 --- modulename: t, funcname: <module>
t.py(3): import mypackage.mymodule
 --- modulename: mypackage/__init__, funcname: <module>
__init__.py(1):   --- modulename: mypackage/mymodule, funcname: <module>
mymodule.py(1): print 42
42
t.py(5): print 5
5
 --- modulename: ./trace, funcname: _unsettrace
trace.py(80):         sys.settrace(None)

我跟踪称为测试脚本t.py,其进口的模块mymodule.py是在一个mypackage(因此实际文件./mypackage/mymodule.py)。该模块仅打印42,测试脚本本身打印5。

这样可以解决您的问题吗?

编辑:

根据第二种观点,我提出了一个不同的补丁。

函数globaltrace_lt(),模块名是通过调用派生的modname(); 修补此呼叫fullmodname()

            modulename = fullmodname(filename)

我认为这可能是一个不太麻烦的补丁。

python 2022/1/1 18:44:47 有313人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶