Python,使用anytree包无法使用graphviz绘制树形图

3
因为任意树(anytree)包的某些功能需要使用graphviz,所以我安装了graphviz。我已经将代码"from anytree.exporter import DotExporter"添加到Python文档中,并定义了树的根节点。然而,当我尝试使用'DotExporter(root).to_picture('root.png')'命令生成png和dot文件时,出现了"FileNotFoundError: [WinError 2] The system cannot find the file specified"错误消息。我已经尝试了各种解决方案,但没有成功。最终,我找到了一个解决方法:使用命令 'DotExporter(root).to_dotfile('root.dot')' 生成.dot文件,并在在线工具http://www.webgraphviz.com/http://sandbox.kidstrythisathome.com/erdos/ 中打开文件并生成图形。

为什么你只有99%的确定性?应该是100% :) - Yuca
1
好的,我刚刚检查过了,现在我已经100%确定了。 - Joe Stephen
您可能还需要安装python-graphviz软件包。这似乎有点混乱:https://github.com/ContinuumIO/anaconda-issues/issues/1666 - darthbith
@darthbith 很不幸,这并没有起作用。我阅读了你链接的整个线程,尝试了所有提出的解决方案(大约只有2或3个,其余的帖子都是人们在抱怨),但没有找到有效的解决方法。考虑到Anaconda和Graphviz不兼容的持久性问题,我决定卸载Anaconda并使用其他发行版... - Joe Stephen
我对Anaconda没有个人偏好;这只是我的大学要求我安装的发行版,而且我一直计划切换到支持逐行代码执行以进行调试的Python引擎。我建议任何其他不太精通技术并遇到Anaconda和graphviz相同问题的人也这样做。 - Joe Stephen
1个回答

4
这里是我的解决方法。我正在使用“入门”中的示例,初始步骤如下:
创建一个树对象作为udo,然后尝试DotExporter(udo).to_picture("udo.png")。这就是我得到与OP相同错误的地方。
假设您已经安装了graphvizpython-graphviz(例如conda install -c anaconda graphviz python-graphviz),您可以使用以下代码输出图形(首先保存一个dot文件):
DotExporter(udo).to_dotfile('udo.dot')

from graphviz import Source
Source.from_file('udo.dot')

然后用以下方式保存图像文件:
from graphviz import render
render('dot', 'png', 'udo.dot') 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接