PyGraphViz agraph.layout() 抛出 I0 错误

1 投票
1 回答
1347 浏览
提问于 2025-04-17 19:42

在运行以下Python代码后:

import pygraphviz as pgv
G=pgv.AGraph()
G.add_edge(1,2)
G.add_edge(2,3)
G.add_edge(3,4)
G.layout(prog='dot')
G.draw('1.png')

我在IDLE中得到了这个错误信息:

 File "<pyshell#7>", line 1, in <module>
   G.layout(prog='dot')
 File "C:\Python27\lib\site-packages\pygraphviz\agraph.py", line 1302, in layout
   data=self._run_prog(prog,' '.join([args,"-T",fmt]))
 File "C:\Python27\lib\site-packages\pygraphviz\agraph.py", line 1275, in _run_prog
   raise IOError("".join(errors))
 IOError: 'C:\Program' is not recognized as an internal or external command,
 operable program or batch file.

请帮帮我,我正在做一个课程项目。
信息:Graphviz安装正确。

1 个回答

0

看起来这是你使用的PyGraphViz版本和Windows之间的一个问题。我找到了一份关于这个问题的报告,但这个问题在2011年就已经被修复了。不过,他们似乎还没有正式发布这个更新,但如果你能切换到他们的SVN版本,应该能找到这个修复。

如果你不想切换版本,而且愿意自己动手修改源代码,他们的实际修复方法其实很简单。你只需要找到agraph.py这个文件,然后把这一行:

runprog=self._get_prog(prog) 

改成

runprog=r'"%s"'%self._get_prog(prog)

撰写回答