安装graphviz和pydotplus后找不到IPython 3.5 GraphViz的可执行文件

时间:2017-02-14 20:18:26

标签: python python-3.x ipython-notebook graphviz

我安装了graphviz 2.38.0-4。此错误消息仍显示:

C:\Users\username\AppData\Local\Continuum\Anaconda3\lib\site- packages\pydotplus\graphviz.py in create(self, prog, format)
   1958             if self.progs is None:
   1959                 raise InvocationException(
-> 1960                     'GraphViz\'s executables not found')
   1961 
   1962         if prog not in self.progs:

InvocationException: GraphViz's executables not found

我从这里尝试过方法:Graphviz's executables are not found (Python 3.4) 仍然无法解决问题。

1 个答案:

答案 0 :(得分:2)

我遇到了同样的问题。事实证明,' graphviz'在Anaconda上(至少在Windows上)与PyPI上的graphviz包不同,即它不是graphviz的Python包装器,而是Graphviz二进制文件本身。 Conda将二进制文件安装在" Library \ bin"文件夹(例如,在我的情况下," C:\ Anconda3 \ Library \ bin")。通常这样就可以了。" Library \ bin"默认情况下位于系统路径上。但是anaconda-graphviz包将graphviz二进制文件放在他们自己的子目录中#Library; Library \ bin \ graphviz" - 在" Library \ bin"中有批处理文件' dot.bat'将呼叫重定向到" Library \ bin \ graphviz \ dot.exe"。所以二元组如“twopi”等。默认情况下不在路径上。但至少pydotplus(我测试的唯一一个)期望它们是;或者它寻找一个"遗产" Graphviz安装在Windows注册表中,如果失败,则安装在默认安装位置(在%PROGRAMFILES%下)。

所以我看到两个解决方案:要么直接从graphviz.com安装Graphviz。因为我想保留更新“graphviz”的能力。通过' conda',我改为使用pydotplus' set_graphviz_executables'覆盖可执行文件的路径。但是,据我所知,每个图表都必须重做:

import os

def conda_fix(graph):
        path = os.path.join(sys.base_exec_prefix, "Library", "bin", "graphviz")
        paths = ("dot", "twopi", "neato", "circo", "fdp")
        paths = {p: os.path.join(path, "{}.exe".format(p)) for p in paths}
        graph.set_graphviz_executables(paths)

graph = pydotplus.graph_from_data(data)
conda_fix(graph)
Image(graph.create_png())