跳转到主要内容

使用graphviz绘制Python对象引用图

项目描述

Python对象图

Build Status Build Status (Windows) Test Coverage Documentation Status

objgraph 是一个模块,允许您可视化探索Python对象图。

如果您想绘制漂亮的图形,则需要 graphviz

我推荐 xdot 用于交互式使用。 pip install xdot 应该足够;objgraph 将自动在您的 PATH 中查找它。

安装和文档

pip install objgraph从PyPI下载

文档位于 https://mg.pov.lt/objgraph

历史

当我正在寻找Python程序中的内存泄漏时,我开发了一套函数,这些函数最终变成了 objgraph。整个故事——包括有插图示例——可以在这一系列博客文章中找到

支持和开发

源代码可以在这个Git仓库中找到: https://github.com/mgedmin/objgraph

要检查它,请使用 git clone https://github.com/mgedmin/objgraph

https://github.com/mgedmin/objgraph/issues中报告错误。

变更

3.6.1 (2024-02-26)

  • 添加对Python 3.12的支持。

3.6.0 (2023-06-16)

  • 添加对Python 3.9、3.10和3.11的支持。

  • 放弃对Python 2.7和3.6的支持。

3.5.0 (2020-10-11)

  • 在Python 3上,测试套件不需要mock;使用unittest.mock代替。

  • 使用coverage-python-version对每个Python版本进行100%测试覆盖率,而不是合并。

  • 将可选的extra_node_attrs参数添加到show_backrefsshow_backrefs

  • 修复IPython/Jupyter内联图支持代码,即使你明确传递了filename='foo.png'参数,此代码也会启动。参见问题47

  • 添加对Python 3.8的支持。

  • 放弃对Python 3.5的支持。

3.4.1 (2019-04-23)

  • 添加对Python 3.7的支持。

  • 放弃对Python 3.3和3.4的支持。

3.4.0 (2018-02-13)

  • 新增函数:get_new_idsat_addrs

    由Justin Black在PR 36中贡献。

3.3.0 (2017-12-28)

  • 新增函数:growth

3.2.0 (2017-12-20)

  • typestatsmost_common_typesshow_most_common_typesshow_growth添加新的filter参数。

  • 以更人性化的方式显示lambda函数。

3.1.2 (2017-11-27)

  • 更正变更日志中的UTF-8 mojibake,并将所有链接切换到HTTPS。

3.1.1 (2017-10-30)

  • 添加对Python 3.6的支持。

  • safe_repr中用except Exception:替换裸的except:

3.1.0 (2016-12-07)

  • 支持在IPython/Jupyter笔记本中内联显示图(问题28 <https://github.com/mgedmin/objgraph/pull/28>)。

3.0.1 (2016-09-17)

  • show_most_common_typesshow_growthfile参数现在默认为None,而不是sys.stdout。None被视为与sys.stdout相同,这意味着如果你在运行时更改它(在doctests中会发生这种情况),将使用正确的stdout。

3.0.0 (2016-04-13)

  • show_most_common_typesshow_growth现在接受一个file参数,如果您想将输出重定向到其他地方。

    修复了问题24。由“d-sun-d”贡献。

  • 不要相信__class__是准确的,以及__name__是一个字符串。修复了涉及mocks的一些复杂角落中的错误。

    由Andrew Shannon Brown在PR 26中贡献。

  • 放弃对Python 2.4、2.5和2.6的支持。

  • 放弃对Python 3.1和3.2的支持。

  • 添加对Python 3.5的支持。

2.0.1 (2015-07-28)

  • by_typecounttypestats中避免在堆栈帧和局部objects变量之间创建引用循环。

    修复了问题22。由Erik Bray贡献。

2.0.0 (2015-04-18)

  • show_refsshow_backrefs现在接受一个文件对象(通过新的output参数)作为替代于一个文件名。

  • 将内部辅助方法设为私有。这包括find_chainshow_graphobj_node_idobj_labelquotelong_typenamesafe_reprshort_reprgradientedge_label_program_in_path

  • 正确确定countby_type和绘图函数中的旧式类的名称。

    修复了问题16。由Mike Lambert贡献。

1.8.1 (2014-05-15)

  • 不要期望文件对象有一个encoding属性。使objgraph兼容Eventlet的monkey-patching。

    修复了问题6。由Jakub Stasiak贡献。

1.8.0 (2014-02-13)

  • 已迁移到GitHub。

  • 支持Python 3.4(《launchpad.net/bugs/1270872》LP#1270872)。

  • 新增功能:is_proper_module

  • typestatsmost_common_typesshow_most_common_typesshow_growthshow_refsshow_backrefs新增了shortnames参数。

    countby_type现在接受完全限定的类型名称。

    修复了问题4

1.7.2 (2012-10-23)

  • 错误修正:在Python 2.7上sdist损坏(tarfile中的UnicodeDecodeError)。

  • show_refsshow_backrefsfilename参数现在允许任意图像格式,而不仅仅是PNG。由Riccardo Murri补丁。

  • 临时.dot文件现在命名为objgraph-*.dot而不是tmp*.dot

  • Python 3.3支持:没有代码更改,但一些测试开始失败,因为新改进的字典实现不再保留用作字典键的str对象的引用。

  • 添加了tox.ini以方便多Python测试。

1.7.1 (2011-12-11)

  • 错误修正:对象表示中的非ASCII字符会在某些地区(例如LC_ALL=C)上Python 3.x中破坏图形生成。由Stefano Rivera报告并修复。

  • 错误修正:setup.py在Python 3.x上损坏。

  • 错误修正:Windows上找不到dot.exe/xdot.exe(《launchpad.net/bugs/767239》LP#767239)。

  • 文档更新:记录了遗忘的find_ref_chain,更新了show_chain原型。

1.7.0 (2011-03-11)

  • 新增功能:find_ref_chain

  • show_chain新增了backrefs参数。

  • 新增功能:get_leaking_objects,基于Kristján Valur的一篇博客文章

  • counttypestatsmost_common_typesshow_most_common_typesby_type新增了objects参数。

  • 指向函数属性(如__defaults__或__globals__)的边现在被标记。

  • 现在显示不是简单字符串的边标签的类型。

  • 错误修正:在字典键中使用的不安全字符(如‘0’)会破坏图形生成。

  • 错误修正:show_refs(…, filename=’graph.dot’)会抱怨无法识别的文件类型,然后生成png。

1.6.0 (2010-12-18)

  • Python 3支持,感谢Stefano Rivera(修复了《launchpad.net/bugs/687601》LP#687601)。

  • 删除了奇怪的weakref特殊处理。

1.5.1 (2010-12-09)

  • 避免在uncollectable-garbage.txt中测试失败(修复了《launchpad.net/bugs/686731》LP#686731)。

  • 添加了HACKING.txt(后来重命名为HACKING.rst)。

1.5.0 (2010-12-05)

  • 显示帧对象(修复了《launchpad.net/bugs/361704》LP#361704)。

  • 新增功能:show_growthshow_chain

  • find_backref_chain在找不到链时返回[obj]而不是None,这使得show_chain(find_backref_chain(...), ...)不会中断。

  • 通过指定too_many来显示从show_refs/show_backrefs输出中跳过的引用数量。

  • show_refs现在会进入模块。

  • 不要突出显示定义了__del__的类,仅突出显示这些类的实例。

  • show_refs/show_backrefs中显示引用计数。

  • 添加了Sphinx文档和PyPI长描述。

1.4.0 (2010-11-03)

  • 兼容Python 2.4和2.5(《tempfile.NamedTemporaryFile》没有《delete》参数)。

  • 新增功能:most_common_types

1.3.1 (2010-07-17)

  • 重建sdist,不缺少文件(修复了《launchpad.net/bugs/606604》LP#606604)。

  • 添加了MANIFEST.in和Makefile以检查setup.py sdist生成的源分布没有缺少文件。

1.3 (2010-07-13)

  • 突出显示具有__del__方法的对象。

  • 修复 LP#483411:建议始终将 [obj] 传递给 show_refsshow_backrefs,因为 obj 可能是一个列表/元组。

  • 修复 LP#514422show_refsshow_backrefs 现在不再在当前工作目录中创建文件。相反,它们接受一个文件名参数,可以是 .dot 文件或 .png 文件。如果为 None 或未指定,这些函数将尝试像以前一样启动 xdot。

  • 为图形生成函数添加了新的 extra_info 参数(由 Thouis Jones 补丁,LP#558914)。

  • setup.py 现在应该与 distutils 兼容了(《a href="https://launchpad.net/bugs/604430" rel="nofollow">LP#604430,感谢 Randy Heydon)。

1.2 (2009-03-25)

  • 项目网站,公共源代码库,已上传到 PyPI。

  • 没有代码更改。

1.1 (2008-09-10)

  • 新功能:用于显示前向引用的 show_refs

  • 新函数:typestatsshow_most_common_types

  • 对象框中不再拥挤着无用的信息(如 ID)。

  • 如果可用,将启动 xdot

1.0 (2008-06-14)

  • 第一个公共版本。

项目详情


下载文件

为您的平台下载文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。

源分布

objgraph-3.6.1.tar.gz (759.5 kB 查看哈希)

上传时间

构建分布

objgraph-3.6.1-py2.py3-none-any.whl (17.7 kB 查看哈希)

上传时间 Python 2 Python 3

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面