在Spyder中使用Graphviz无法显示图/PDF图像的问题求助
以下是几个针对性的排查和解决步骤:
确认Graphviz路径配置正确
你代码里的C:/location/of/files/必须指向Graphviz的bin目录(比如默认安装路径可能是C:/Program Files/Graphviz/bin/),这个目录里包含dot.exe等核心工具。
验证方法:打开Windows命令提示符,输入dot -V,如果能返回Graphviz的版本信息,说明路径配置正确;如果报错,就把正确的bin目录路径替换到代码的os.environ行里。手动检查生成的文件
f.view()和f.render()其实会在Spyder的当前工作目录生成文件(可以通过运行print(os.getcwd())查看当前路径)。去找bfs.gv和bfs.gv.pdf文件,手动打开看看是否有图形内容。如果文件存在且正常,说明是Spyder没有自动唤起查看器,而非图形生成失败。强制用系统程序打开生成的文件
绕过Spyder的默认查看器,直接调用系统默认程序打开生成的PDF/PNG:import webbrowser import graphviz import os os.environ["PATH"] += os.pathsep + '你的Graphviz bin路径' f = graphviz.Digraph('G', filename='bfs.gv') # 省略节点和边的添加代码... f.render(view=False) # 只生成文件,不自动打开 webbrowser.open('bfs.gv.pdf') # 用默认浏览器打开PDF也可以尝试生成PNG格式的图,兼容性更好:
f.render(filename='bfs.gv', format='png', view=True)调整Spyder的图形后端设置
打开Spyder的设置(Tools > Preferences),进入IPython console > Graphics,将Backend设置为Automatic(如果当前是Inline的话),然后重启Spyder再测试。简化代码排查业务逻辑问题
先写一个极简的测试代码,排除Path变量或业务逻辑的问题:import graphviz import os os.environ["PATH"] += os.pathsep + '你的Graphviz bin路径' f = graphviz.Digraph('TestGraph') f.node('Start') f.node('End') f.edge('Start', 'End') f.view()如果这个代码能正常显示图形,说明之前的问题出在
Path变量(比如为空、节点名称格式错误)或者自定义的graph模块里。
内容的提问来源于stack exchange,提问作者Jeany Huynh

