【问题标题】:Graphviz vs PyGraphVizGraphviz 与 PyGraphViz
【发布时间】:2016-09-18 02:28:43
【问题描述】:

我有一些点文件(有向图)需要在 Python 中读取并从节点中提取一些值来填充我的数据结构。我看到有两个用于 Python 的 graphviz 包:graphvizpygraphviz。两者有什么大的区别吗?从文档的快速滚动中,他们几乎似乎在做同样的事情。我将在 Python 2.7.X 中使用它来完成上述任务。

【问题讨论】:

标签: python graphviz pygraphviz


【解决方案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 绑定的部署要容易得多。
猜你喜欢
  • 2014-05-08
  • 2021-05-18
  • 2018-10-14
  • 1970-01-01
  • 2018-04-26
  • 2016-12-21
  • 1970-01-01
  • 2014-08-02
  • 2014-05-09
相关资源
最近更新 更多