使用Anytree和graphviz在python中呈现树。Can';无法打开文件

使用Anytree和graphviz在python中呈现树。Can';无法打开文件,python,graphviz,pydot,anytree,Python,Graphviz,Pydot,Anytree,这个问题基于Tarun使用anytree和graphviz在python中呈现树的答案: 安装graphviz并将其添加到路径变量后,我将尝试运行以下python代码: DotExporter(nodes[0]["a"], nodeattrfunc=lambda node: 'label="{}"'.format(node.display_name)).to_picture("tree.png") 上述代码生成以下错误: Error: dot: can't open C:\

这个问题基于Tarun使用anytree和graphviz在python中呈现树的答案:

安装graphviz并将其添加到路径变量后,我将尝试运行以下python代码:

DotExporter(nodes[0]["a"],
        nodeattrfunc=lambda node: 'label="{}"'.format(node.display_name)).to_picture("tree.png")
上述代码生成以下错误:

  Error: dot: can't open C:\Users\username\AppData\Local\Temp\tmpa7t554le
Traceback (most recent call last):
  File "D:\mypath\tree.py", line 34, in <module>
    dot.to_picture('tree.png')
  File "C:\Users\username\AppData\Local\Programs\Python\Python36-32\lib\site-packages\anytree\exporter\dotexporter.py", line 229, in to_picture
    check_call(cmd)
  File "C:\Users\username\AppData\Local\Programs\Python\Python36-32\lib\subprocess.py", line 291, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['dot', 'C:\\Users\\username\\AppData\\Local\\Temp\\tmpa7t554le', '-T', 'png', '-o', 'tree.png']' returned non-zero exit status 2.

有办法解决这个问题吗

我刚刚遇到了这个问题。经过2小时的调试,我发现对于Windows,您必须在dotporter.py中将delete标志设置为False。转到“dotexporter.py”中的第224行并进行以下更改。这看起来像是源文件中的一个bug。这对我很有用:

 with NamedTemporaryFile("wb", delete=False) as dotfile:

这在某种程度上是windows和python临时文件句柄的意外行为。请使用最新的anytree版本()。它包括一个修复程序。

您可以打开“C:\Users\username\AppData\Local\Temp\tmpa7t554le”并查看发生了什么情况吗?谢谢您的帮助。实际上,似乎没有创建tmp文件。因此,它不会显示,也无法通过windows资源管理器访问。可能是用户访问问题或其他原因?尝试进入DotExporter的代码,看看发生了什么
 with NamedTemporaryFile("wb", delete=False) as dotfile: