为什么pydot无法在Windows 8中找到GraphViz的可执行文件?

时间:2013-08-26 07:38:32

标签: graphviz scikit-learn pygraphviz pydot

我在Windows 8中安装了GraphViz 2.32,并将C:\ Program Files(x86)\ Graphviz2.32 \ bin添加到系统PATH变量中。仍然pydot无法找到它的可执行文件。

Traceback (most recent call last):
  File "<pyshell#26>", line 1, in <module>
    graph.write_png('example1_graph.png')
  File "build\bdist.win32\egg\pydot.py", line 1809, in <lambda>
    lambda path, f=frmt, prog=self.prog : self.write(path, format=f, prog=prog))
  File "build\bdist.win32\egg\pydot.py", line 1911, in write
    dot_fd.write(self.create(prog, format))
  File "build\bdist.win32\egg\pydot.py", line 1953, in create
    'GraphViz\'s executables not found' )
InvocationException: GraphViz's executables not found

我发现了这个https://code.google.com/p/pydot/issues/detail?id=65,但无法解决问题。

26 个答案:

答案 0 :(得分:61)

问题是pydot模块找不到GraphViz的路径,如回溯中所示:

  

&#39;未找到GraphViz的可执行文件&#39;

我通过将GraphViz bin目录添加到我的计算机路径中,在Windows 7计算机上解决了这个问题。然后重新启动我的python IDE以使用更新的路径。

  1. 如果您还没有安装GraphViz(我使用的是MSI下载)
  2. 获取gvedit.exe的路径(对我而言,它是&#34; C:\ Program Files (86)\ Graphviz2.34 \ BIN \&#34)
  3. 将此路径添加到计算机的路径
  4. 进入环境设置以设置路径的一种方法是单击这些按钮/菜单选项中的每一个:start-&gt; computer-&gt; system properties-&gt;高级设置 - &gt;环境变量
  5. 点击修改用户路径
  6. 将此字符串添加到“变量值”列表的末尾(包括 分号):; C:\ Program Files(x86)\ Graphviz2.34 \ bin
  7. 点击确定
  8. 重新启动Python IDE

答案 1 :(得分:59)

在Mac上brew install graphviz解决了我的问题。

答案 2 :(得分:28)

这是因为我在安装pydot后安装了graphviz。因此,pydot无法找到它。以正确的顺序重新安装它解决了问题。

答案 3 :(得分:20)

在我的案例中来自Sadik的回答 pydot and graphviz error: Couldn't import dot_parser, loading of dot files will not be possible在Ubuntu 12.04.5 LTS上为我工作

sudo apt-get install python-pydot

答案 4 :(得分:19)

我尝试通过控制面板添加PATH,但还需要重新启动命令提示符。以下内容也适用于更新Notebook会话中的路径而不退出:

import os     

os.environ["PATH"] += os.pathsep + 'C:/Program Files (x86)/Graphviz2.38/bin/'

答案 5 :(得分:8)

您需要从Graphviz安装,然后将您安装Graphviz及其bin目录的文件夹路径添加到系统环境路径。

答案 6 :(得分:8)

对于Windows 8.1&amp; python 2.7,我按照以下步骤解决了问题

1。下载并安装graphviz-2.38.msi https://graphviz.gitlab.io/_pages/Download/Download_windows.html

2。设置路径变量

控制面板&gt;系统和安全性&gt;系统&gt;高级系统设置&gt;环境变量&gt;路径&gt;编辑 添加&#39; C:\ Program Files(x86)\ Graphviz2.38 \ bin&#39;

  1. 重新启动当前运行的需要路径
  2. 的应用程序

答案 7 :(得分:4)

将dot.exe添加到您的路径中。 右键单击我的电脑&gt;高级系统设置&gt; <环境变量> <高光'路径'&gt;编辑 然后将引号中的所有内容追加到路径“; C:\ Program Files(x86)\ Graphviz2.34 \ bin \”,具体取决于您安装Graphviz ofcourse的位置。然后重新启动python shell并键入。

  
    
      

导入pydot       pydot.find_graphviz()       确保'bin'后面有一个斜杠,所以它从文件夹中获取所有内容,我尝试没有斜线,上面的代码没有返回任何内容,但是在添加斜杠后,它返回了所需的graphviz可执行文件及其路径。

    
  

答案 8 :(得分:3)

对我来说:(Win10,Anaconda3) 确保你已完成“conda install graphviz”

我必须添加到PATH:C:\ Users \ username \ Anaconda3 \ Library \ bin \ graphviz

要修改PATH,请转到“控制面板”&gt;系统和安全性&gt;系统&gt;高级系统设置&gt;环境变量&gt;路径&gt;编辑&gt;新

确保在此之后重新启动您的IDE。 它应该工作

答案 9 :(得分:3)

我正在使用Windows 10和Anaconda 3.6.5。我没有管理员权限,因此,如果有人在像我这样的情况下,此解决方案非常有效。

我的graphviz的路径是外观 C:\Users\User_Name\AppData\Local\Continuum\anaconda3\Library\bin\graphviz

在Spyder或Jupyter中,键入以下内容:

import os os.environ['PATH'].split(os.pathsep) 这将列出您环境中的所有路径。看看他们,如果您的graphviz路径不在这里,那么去找到它并复制该路径,就像上面的示例一样。 然后键入以下内容: os.environ['PATH'] += os.pathsep + 'C:\\Users\\User_Name\\AppData\\Local\\Continuum\\anaconda3\\Library\\bin\\graphviz'

仅此而已,但是请注意,如果重新启动内核,则每次都必须运行这些命令

答案 10 :(得分:2)

我也有同样的问题,我最终通过查看库来解决它。

库考虑将路径设置为 C:\ Program Files \ ATT \ Graphviz \ bin ,但默认情况下,Graphviz安装到 C:\ Program Files(x86)\ Graphviz < / em>经历了32位标准,因此 pydot 无法获得所需的路径。 只需根据脚本的要求移动目录,您就可以了。

P.S。: - 考虑对Environmnet变量进行等效更改。

P.S.S: - 还要检查Graphviz是直接在Program Files(x86)下还是在ATT下。

答案 11 :(得分:2)

在Windows中,即使安装了graphviz-2.38.msi,也可以在pydot.py中添加自己的路径(在site-package文件夹下找到)

 if os.sys.platform == 'win32':

    # Try and work out the equivalent of "C:\Program Files" on this
    # machine (might be on drive D:, or in a different language)
    #

    if os.environ.has_key('PROGRAMFILES'):

        # Note, we could also use the win32api to get this
        # information, but win32api may not be installed.

        path = os.path.join(os.environ['PROGRAMFILES'], 'ATT', 'GraphViz', 'bin')

    else:

        #Just in case, try the default...
        path = r"C:\PYTHON27\GraphViz\bin"  # add here.

答案 12 :(得分:1)

我正在运行Windows 10计算机并且也遇到了一些问题。 我通过msi安装程序安装了graphviz。通过系统设置添加对我不起作用。

我使用msi删除了安装,并使用了Windows程序包管理器chocolatey。 删除已安装的版本是必要的,否则巧克力将无法安装。

现在运行正常。我建议这样做。

答案 13 :(得分:1)

以下是我为上述问题所做的工作。我正在使用Windows 10 os和python 3.6.5

  1. clicking here

  2. 安装PIP
  3. 打开命令提示符并键入命令“pip install graphviz”

  4. 转到我的电脑(这台电脑)并使用关键字“graphviz”进行搜索

  5. 打开graphviz文件夹并复制其路径并将其保存在记事本中

  6. 在graphviz中查找bin文件夹并通过鼠标右键单击复制文件夹

  7. 现在再次回到我的电脑并搜索“pydotplus”

  8. 显示名为 pydotplus 的文件夹。打开它并粘贴您之前复制的bin文件夹(Graphviz)的副本

  9. 前往控制面板&gt;系统和安全&gt;系统设置&gt;高级设置&gt; <环境变量>添加新路径

  10. 添加您在记事本中复制的路径,然后点击一系列“ok”

  11. 现在你可以享受使用graphviz

答案 14 :(得分:1)

在此处安装Graphviz并添加其bin路径解决了我的问题

https://graphviz.gitlab.io/_pages/Download/Download_windows.html

pip安装Graphviz本身似乎不够

答案 15 :(得分:1)

在“ pydot.py”(位于... \ Anaconda3 \ Lib \ site-packages中)中,替换:

def get_executable_extension():
    # type: () -> str
    if is_windows():
        return '.bat' if is_anacoda() else '.exe'
    else:
        return ''

具有:

def get_executable_extension():
    # type: () -> str
    if is_windows():
        return '.exe'
    else:
        return ''

当系统是“ Windows / Anaconda”与“ Windows”,并且可能没有与“ .exe”关联的“ .bat”时,似乎没有任何理由添加“ .bat”。这似乎比为每个可执行pydot调用添加一个“ .bat”更好。

答案 16 :(得分:0)

在完成所有的graphviz安装之后,将其添加到环境变量的PATH中,您需要添加以下两行:

import os
os.environ["PATH"] += os.pathsep + 'C:/Program Files (x86)/Graphviz2.38/bin/'

答案 17 :(得分:0)

我用conda安装python-graphviz 然后 康达安装pydot 接着 康达安装pydot加 然后它起作用了。

所以:

conda install python-graphviz
conda install pydot
conda install pydotplus

答案 18 :(得分:0)

在Anaconda发行版上,pip安装不起作用。我先做过pip uninstall graphvizpip uninstall pydot,然后依次做过conda install graphvizconda install pydot,然后就可以了!

答案 19 :(得分:0)

该解决方案很简单,您只需从here下载并安装Graphviz。

然后将路径变量设置为bin目录,在我的情况下为C:\Program Files (x86)\Graphviz2.38\bin。最后,执行conda install python-graphviz,它应该可以正常工作。

答案 20 :(得分:0)

如果您不想弄乱路径变量(例如,如果您不是管理员)并且在Windows上工作,则可以执行以下操作来为我解决问题。

在编辑器中打开graphviz.py(可能位于...Anaconda\pkgs\graphviz***\Library\bin中)。如果找不到它,则可以通过错误消息将其打开。

转到功能__find_executables并替换:

elif os.path.exists(os.path.join(path, prg + '.exe')):
   if was_quoted:
      progs[prg] = '"' + os.path.join(path, prg + '.exe') + '"'
   else:
      progs[prg] = os.path.join(path, prg + '.exe')

使用

elif os.path.exists(os.path.join(path, prg + '.bat')):
   if was_quoted:
      progs[prg] = '"' + os.path.join(path, prg + '.bat') + '"'
   else:
      progs[prg] = os.path.join(path, prg + '.bat')

答案 21 :(得分:0)

有关graphviz的一些知识:

  1. graphviz不仅是python模块,还是一个独立程序。我相信你们都需要使graphviz正常工作。
  2. 独立的graphviz程序最初由AT&T开发,开源,然后被放弃。该软件包的当前维护者忘记了包含Windows注册表项,因此Python可以找到程序可执行文件。
  3. pydotplus \ graphviz.py的第620行包含一个备份路径,用于在注册表中找不到graphviz的情况。它使用旧的ATT文件路径。将文件路径更新为您计算机上的文件路径(您将需要具有管理员权限),并且graphviz应该可以与pydotplus一起使用。

示例:

# Just in case, try the default... path = r"C:\Program Files (x86)\Graphviz2.38\bin"

答案 22 :(得分:0)

您可以使用pydotplus代替pydot。然后按照以下步骤操作:

首先,找到C:\Users\zhangqianyuan\AppData\Local\Programs\Python\Python36\Lib\site-packages\pydotplus

第二,打开graphviz.py

第三,找到第1925-1972行,找到函数def create(self, prog=None, format='ps'):

最终,在函数中:

  1. 查找:

    if prog not in self.progs:
        raise InvocationException(
            'GraphViz\'s executable "%s" not found' % prog)
    

    `

    if not os.path.exists(self.progs[prog]) or \
            not os.path.isfile(self.progs[prog]):
        raise InvocationException(
            'GraphViz\'s executable "{}" is not'
            ' a file or doesn\'t exist'.format(self.progs[prog])
        )
    
  2. 在两个块之间添加以下内容(您的Graphviz的可执行路径):

    self.progs[prog] = "C:/Program Files (x86)/Graphviz2.38/bin/gvedit.exe"

  3. 添加结果后为:

    if prog not in self.progs:
        raise InvocationException(
            'GraphViz\'s executable "%s" not found' % prog)
    
    self.progs[prog] = "C:/Program Files (x86)/Graphviz2.38/bin/gvedit.exe"
    
    if not os.path.exists(self.progs[prog]) or \
            not os.path.isfile(self.progs[prog]):
        raise InvocationException(
            'GraphViz\'s executable "{}" is not'
            ' a file or doesn\'t exist'.format(self.progs[prog])
        )
    
  4. 保存更改的文件,然后您就可以成功运行它。

  5. 您最好将其另存为bmp文件,因为png文件将无法工作。 picture is here

答案 23 :(得分:0)

我没有使用Windows机器,我在Linux平台上。我在使用python包pyAgrum绘制贝叶斯网络的上下文中遇到了这个可执行文件未找到的问题。 pyAgrum使用graphviz绘制网络。我在python 3.6.4环境中使用anaconda平台安装了pyagrum和graphviz(即conda install <package name>)。

我在/conda/envs/<environment name>/bin目录中找到了可执行文件。所以,这只是让我的笔记本内核找到它们的问题。

如果您import os,请使用命令os.environ['PATH'].split(os.pathsep)查看您的环境正在查看的可执行路径。如果包含graphviz可执行文件的路径不在其中,您可以通过执行以下操作添加它:os.environ['PATH'] += os.pathsep + <path to executables>

我想这个解决方案可以在我的上下文之外工作。此解决方案的主要缺点是每次重新启动内核时都需要执行此操作。

答案 24 :(得分:0)

尝试了所有解决方案/发布/博客中描述的所有安装顺序,最终意识到anaconda无法读取环境变量。封闭的蟒蛇和Spyder。然后在管理员模式下打开Anaconda(在Windows 64位操作系统机器上),然后打开Spyder。 PYDOT调用脚本运行良好。

答案 25 :(得分:0)

我有这个问题并注意到它是用两组双引号打印我的PATH。我通过在1959年的第1959行添加以下内容解决了这个问题:

C:\Anaconda\Lib\site-packages\pydot.py

self.progs[prog] = os.path.normpath(self.progs[prog][1:-1])

显然不是最好的解决方案,但它让我度过了一天。