pygraphviz OSError:格式:“点”无法识别。使用以下之一:

Posted

技术标签:

【中文标题】pygraphviz OSError:格式:“点”无法识别。使用以下之一:【英文标题】:pygraphviz OSError: Format: "dot" not recognized. Use one of: 【发布时间】:2019-11-30 06:09:12 【问题描述】:

我想用 pygraphviz 绘制 DEAP 生成的树。我尝试按照DEAP document 中的示例进行操作,但出现以下错误:

Traceback (most recent call last):
  File "<input>", line 24, in <module>
  File "C:\Users\xxyao\program\anaconda\envs\rf\lib\site-packages\pygraphviz\agraph.py", line 1399, in layout
    data = self._run_prog(prog, ' '.join([args, "-T", fmt]))
  File "C:\Users\xxyao\program\anaconda\envs\rf\lib\site-packages\pygraphviz\agraph.py", line 1364, in _run_prog
    raise IOError(b"".join(errors).decode(self.encoding))
OSError: Format: "dot" not recognized. Use one of:

Use one of: 之后似乎应该有一些词,但没有。我的环境是Python==3.6,graphviz==3.41,pygraphviz==1.5graphvizpygraphviz是通过conda安装的。

顺便说一下,我尝试了以下方法:

    安装graphviz并将C:\Program Files (x86)\Graphviz2.38\bin添加到系统环境。 conda install pydot, conda install pydot-ng

但还是不行。

更多信息:pygraphviz 提供的其他布局,例如neato fdp twopi 效果很好。只有dot 不起作用!

【问题讨论】:

PATH中是否有dot程序? 抱歉不知道怎么在PATH中添加dot程序... 请在网上搜索“如何修改路径”或搜索堆栈溢出我认为还有其他关于同一topi的问题(conda、graphviz和路径问题) 很抱歉再次打扰。我尝试了以下方法:1,安装graphviz并将C:\Program Files (x86)\Graphviz2.38\bin添加到系统环境中。 2、conda install pydotconda install pydot-ng。但它仍然无法正常工作。你能告诉我点程序是什么意思吗?非常非常感谢!! C:\Program Files (x86)\Graphviz2.38\bin目录下应该有一个叫做dot.exe的程序。您可以使用where dot 验证这一点。当程序存在时,您可以在终端窗口中输入命令dot --version 以查看是否可以启动它,如果他成功,则它必须是 conda pydot 安装中的某些东西,它推翻了标准路径(我不知道 conda工具/pydot 安装)。 【参考方案1】:

我遇到了同样的问题。并通过在 conda cmd 中执行“dot -c”来解决它。

【讨论】:

谢谢您,先生!这适用于 conda 中的 Windows 10 和 pyton 3.8.5【参考方案2】:

没错,只要打开anaconda Prompt环境 并输入“dot -c”命令并修复错误。

enter image description here

【讨论】:

如果你觉得答案有用,请点赞,不要转发。【参考方案3】:

我做了一些可能被认为有点作弊的东西,但希望它有所帮助。 首先,agraph.py 会考虑目录的位置,因此您可能希望将工作点放在其他点之前

import os
os.environ["PATH"] = "C:\\Program Files\\Graphviz\\bin" + os.pathsep + os.getenv("PATH")

然后我更改了 agraph.py 文件,它可能位于“C:\Users\xxyao\program\anaconda\envs\rf\lib\site-packages\pygraphviz\agraph.py”,第 1561 行

if os.name == "nt":

进入

if os.name == "nt" or os.name == "dot":

【讨论】:

【参考方案4】:

关注@Saul 答案对我有用。我认为根本原因可能是 agraph.py 只允许有限的 PATH 环境变量,所以即使你添加 C:\\Program Files\\Graphviz\\bin 仍然不起作用。

但要小心,我建议这种方式的解决方案应该通过以下方式保护

GVZPath = "C:\\Program Files\\Graphviz\\bin"
if (os.getenv("PATH").find(GVZPath))!=0:
    os.environ["PATH"] = "C:\\Program Files\\Graphviz\\bin" + os.pathsep + os.getenv("PATH")

【讨论】:

以上是关于pygraphviz OSError:格式:“点”无法识别。使用以下之一:的主要内容,如果未能解决你的问题,请参考以下文章

pygraphviz ValueError:在路径中找不到程序点[重复]

Graphviz 与 PyGraphViz

windows下怎么安装pygraphviz?请各位帮帮忙

OSError: [Errno 8] 执行格式错误

Pip install pygraphviz 失败:pygraphviz 的构建轮失败

在 Windows 上安装 pygraphviz