3

所以我已经安装了 anytree 包(经过很大的努力;我不得不在我的系统上添加一些环境变量)。完成此操作后,我可以使用 anytree 包的几乎所有功能——只是不是我想要的。我希望将 graphviz 与 anytree 包结合使用,以便使用“DotExporter”命令绘制树。

我已经安装了graphviz;它的路径是 C:\Users\joel\Anaconda3_2\Lib\site-packages\graphviz,我还在我的 Python 文档中添加了“from anytree.exporter import DotExporter”这行代码(除了需要的其他 anytree 导入做树)。

因此,在定义了我的树的根节点“root”之后,我现在应该能够使用“DotExporter(root).to_picture('root.png')”命令中的任何一个来生成树的 png 和点文件,但是我收到以下错误消息:

'FileNotFoundError: [WinError 2] 系统找不到指定的文件'。

有人知道发生了什么吗?我正在使用带有引擎 Spyder 的 Python 3.6.2 作为 Anaconda 发行版的一部分(我有 Anaconda 3.2)。我 99% 确定我拥有最新版本的 anytree 和 graphviz。

更新:所以我了解到 Anaconda 和 graphviz 之间存在很大的兼容性问题大约一年了,并认为这就是问题所在。在尝试了人们建议的所有解决方案后,我仍然无法让我的程序正常工作,所以我最终卸载了 Anaconda,而是开始将 PyCharm 与标准 Python 解释器一起使用。但是该程序仍然无法运行,因此即使 Anaconda 和 graphviz 之间存在兼容性问题,但事实证明这不是问题所在。我在我室友的机器上尝试了这个程序,它也使用了 Anaconda,得到了同样的错误。

最后我找到了以下解决方法:我无法让 'DotExporter(root).to_picture('root.png')' 命令工作,但 'DotExporter(root).to_dotfile('root.dot') ' 命令有效。“.dot”文件包含代码,可以在记事本中打开(其他文字处理软件也可以)。因此,我只需要找到一种使用点文件而不是使用“DotExporter(root).to_picture('root.png')”命令来绘制树的方法。最简单的方法是通过在线工具http://www.webgraphviz.com/http://sandbox.kidstrythisathome.com/erdos/中的任何一个。只需在记事本中打开您的点文件,复制其内容并将其粘贴到网站并点击生成。

4

1 回答 1

4

这是我的解决方法。我正在使用以下初始步骤来处理“入门”的示例:

创建一个树对象udo,然后尝试DotExporter(udo).to_picture("udo.png")。这是我遇到与 OP 相同的错误的地方。

假设您已经安装graphviz并且python-graphviz(例如conda install -c anaconda graphviz python-graphviz)您可以使用以下命令输出图形(首先保存一个点文件):

DotExporter(udo).to_dotfile('udo.dot')

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

然后用这个保存图像文件:

from graphviz import render
render('dot', 'png', 'udo.dot') 
于 2019-02-06T11:20:37.643 回答