Graphviz 与 PyGraphViz
Posted
技术标签:
【中文标题】Graphviz 与 PyGraphViz【英文标题】:Graphviz vs PyGraphViz 【发布时间】:2016-09-18 02:28:43 【问题描述】:我有一些点文件(有向图)需要在 Python 中读取并从节点中提取一些值来填充我的数据结构。我看到有两个用于 Python 的 graphviz 包:graphviz 和 pygraphviz。两者有什么大的区别吗?从文档的快速滚动中,他们几乎似乎在做同样的事情。我将在 Python 2.7.X 中使用它来完成上述任务。
【问题讨论】:
也许也有用:qr.ae/pGtb7r 也许也有用:github.com/pygraphviz/pygraphviz/issues/346 和 python.libhunt.com/compare-pydot-vs-pygraphviz 和 github.com/pydot/pydot/issues/262 我不明白,为什么 pygraphviz 和 graphviz 都作为 python 包存在? pygraphviz 在做什么,而 graphviz 还没有做什么?为什么我会为 python 选择 pygraphviz vs graphviz? 【参考方案1】:graphviz 是一个轻量级库,它调用 graphviz 作为子进程来执行所有操作并产生输出。这个库非常适合作为生成 SVG 或 PNG 输出的快速简便的方法。
pygraphviz 包含完整的 C 绑定,它使用 graphviz 作为库并公开所有 graphviz 的内部功能,如添加/删除节点/边。但它的部署复杂度更高,因为 pip 需要编译 C 绑定并查找所有库。
在您的情况下,由于您需要读取和操作点文件,因此您似乎必须使用 pygraphviz。其他有趣的替代方法是http://pypi.python.org/pypi/pydot,它是一个纯 Python 点解析器。
免责声明:我有偏见,因为我(一点点)为 pygraphviz 做出了贡献。
【讨论】:
您可能想为 Anaconda 用户添加注释:conda install graphviz
将安装 graphviz 命令行工具(包括 dot
),不是 Python graphviz
库.如果您想要graphviz
Python 库,则必须运行conda install python-graphviz
,它还将安装graphviz 命令行工具(对于pygraphviz
库,只需运行conda install pygraphviz
)。
pygraphviz vs pydot 怎么样?
我不明白,为什么 pygraphviz 和 graphviz 都作为 python 包存在? pygraphviz 在做什么,而 graphviz 还没有做什么?为什么我会为 python 选择 pygraphviz vs graphviz?
@CharlieParker 我认为两者都通过不同的方法解决了本质上相同的问题。 graphviz
是用于“点文件”操作的纯 Python 库,并使用 graphviz 引擎进行渲染,pygraphviz
是 graphviz C 库之上的包装器,也使用 graphviz 来操作底层对象模型。距离最初的答案已经过去了 5 年,现在看来,包之间已经达到了相当的水平。我建议使用纯 python graphviz
,因为不需要编译 c 绑定的部署要容易得多。以上是关于Graphviz 与 PyGraphViz的主要内容,如果未能解决你的问题,请参考以下文章