【问题标题】:Why is pydot unable to find GraphViz's executables in Windows 8?为什么 pydot 在 Windows 8 中找不到 GraphViz 的可执行文件?
【发布时间】:2013-08-28 15:21:33
【问题描述】:

我在 Windows 8 中安装了 GraphViz 2.32,并将 C:\Program Files (x86)\Graphviz2.32\bin 添加到 System 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,但无法解决问题。

【问题讨论】:

  • 您现在可以在不使用 sklearn.tree.plot_tree 安装点的情况下可视化树

标签: graphviz scikit-learn pygraphviz pydot


【解决方案1】:

完成所有graphviz的安装后,添加到环境变量的PATH,你需要添加这两行:

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

【讨论】:

    【解决方案2】:

    我使用了 conda install python-graphviz 然后 康达安装pydot 然后 conda 安装 pydot plus 然后就成功了。

    所以:

    conda install python-graphviz
    conda install pydot
    conda install pydotplus
    

    【讨论】:

      【解决方案3】:

      在 Anaconda 发行版上,pip install 不起作用。我做了一个pip uninstall graphvizpip uninstall pydot,然后我做了conda install graphviz,然后是conda install pydot,按照这个顺序,然后它工作了!

      【讨论】:

        【解决方案4】:

        在“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”时,似乎没有任何添加“.bat”的方法,并且可能没有与“.exe”关联的“.bat”。这似乎比为每个可执行的 pydot 调用添加一个“.bat”更好......

        【讨论】:

        • 这对我有用,与另一个步骤相关联:在路径变量中添加包含 dot.exe 可执行文件的文件夹。
        【解决方案5】:

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

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

        【讨论】:

          【解决方案6】:

          如果您不想弄乱路径变量(例如,如果您不是管理员)并且如果您在 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')
          

          【讨论】:

            【解决方案7】:

            一些关于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"

            【讨论】:

              【解决方案8】:

              您可以使用 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 文件将无法使用。

              【讨论】:

              【解决方案9】:

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

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

              pip install Graphviz 本身似乎不够用

              【讨论】:

                【解决方案10】:

                我正在使用 Anaconda 3.6.5 开发 Windows 10。我没有管理员权限,所以如果有人遇到像我这样的情况,这个解决方案可以完美运行。

                我的 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'

                就是这样,但请注意,如果您重新启动内核,每次都必须运行这些命令

                【讨论】:

                  【解决方案11】:

                  这是我为上述问题所做的。我正在使用 Windows 10 操作系统和 python 3.6.5

                  1. 通过clicking here安装PIP

                  2. 打开命令提示符并输入命令“pip install graphviz”

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

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

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

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

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

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

                  9. 在记事本中添加你复制的路径并点击一串“ok”

                  就是这样,您现在可以享受使用 graphviz 的乐趣了

                  【讨论】:

                  • 有人知道为什么我的graphviz 文件夹没有bin 文件夹吗?只有 pycache 和 .py 文件
                  【解决方案12】:

                  对于 windows 8.1 & python 2.7,我按照以下步骤解决了这个问题

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

                  2 。设置路径变量

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

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

                  【讨论】:

                  【解决方案13】:

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

                  我使用 msi 删除了安装并使用了 Windows 包管理器 chocolatey。 必须删除已安装的版本,否则 Chocolatey 将无法安装。

                  现在它运行良好。我建议这样做。

                  【讨论】:

                    【解决方案14】:

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

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

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

                    我想这个解决方案将在我的上下文之外起作用。此解决方案的主要缺点是每次重新启动内核时都需要这样做。

                    【讨论】:

                      【解决方案15】:

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

                      【讨论】:

                        【解决方案16】:

                        我找到了一个手动解决方案: sudo apt-get install graphviz

                        graph.write('test.dot') dot -Tps test.dot -o outfile.ps

                        您可以在这里查看文件:https://github.com/jecs89/LearningEveryDay/tree/master/GP

                        【讨论】:

                          【解决方案17】:

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

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

                          【讨论】:

                          • 您不必重新启动整个计算机,只需重新启动您要使用的程序即可。这可能是您运行笔记本服务器的命令提示符。
                          • 它在 windows 10 机器上工作。感谢分享此代码
                          • 太棒了!它有帮助!我尝试了一切 - 但这解决了它!谢谢!
                          【解决方案18】:

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

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

                          要修改 PATH,请转到控制面板 > 系统和安全 > 系统 > 高级系统设置 > 环境变量 > 路径 > 编辑 > 新建

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

                          【讨论】:

                            【解决方案19】:

                            我也遇到了同样的问题,我终于通过查看库解决了它。

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

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

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

                            【讨论】:

                              【解决方案20】:

                              在 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.
                              

                              【讨论】:

                              • 我应该注意到您指出的 else 子句并不总是达到。所以我在find_grapviz() 的开头添加了显式路径。当然是非常肮脏的解决方案,但是我在试图让事情正常工作时所浪费的愚蠢时间是如此令人恼火。所以这实际上是一个很好的技巧。
                              【解决方案21】:

                              就我而言,萨迪克的回答 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

                              【讨论】:

                              • 你最好用virtualenv
                              【解决方案22】:

                              在 Mac 上 brew install graphviz 为我解决了这个问题。

                              【讨论】:

                              • 为我工作!谢谢!
                              • sudo aptitude install graphviz 分别在 ubuntu (18) 上工作
                              【解决方案23】:

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

                              【讨论】:

                                【解决方案24】:

                                问题是pydot模块没有找到GraphViz的路径,如traceback所示:

                                '未找到 GraphViz 的可执行文件'

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

                                1. 如果您还没有安装 GraphViz(我使用了 MSI 下载)
                                2. 获取 gvedit.exe 的路径(对我来说是“C:\Program Files (x86)\Graphviz2.34\bin\")
                                3. 将此路径添加到计算机的 PATH 中
                                4. 进入环境设置以设置路径的一种方法是单击以下每个按钮/菜单选项:开始->计算机->系统 属性->高级设置->环境变量
                                5. 点击编辑用户路径
                                6. 将此字符串添加到变量值列表的末尾(包括 分号):;C:\Program Files (x86)\Graphviz2.34\bin
                                7. 点击确定
                                8. 重新启动 Python IDE

                                【讨论】:

                                • 在我的 Windows 8 系统中我遇到了错误,直到我意识到在 Windows 8 中我不应该在路径周围使用引号 (")。删除它们后一切顺利。
                                • 这解决了我在安装 anaconda 时遇到的问题;尝试安装“Graphviz”并将其添加为路径变量时遇到了很多问题。 'msi' 路由有效,但 'pip'、'conda' 安装路由均失败。
                                【解决方案25】:

                                我遇到了这个问题,并注意到它使用两组双引号打印我的 PATH。我通过将以下内容添加到第 1959 行来解决该问题:

                                C:\Anaconda\Lib\site-packages\pydot.py
                                
                                self.progs[prog] = os.path.normpath(self.progs[prog][1:-1])
                                

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

                                【讨论】:

                                  【解决方案26】:

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

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

                                  【讨论】:

                                  • 我在 Windows 10 中按照您的说明进行操作,但 Windows 并未将我的模块路径(位于 google 驱动器中)添加到路径列表中,即使它显示在窗口中也是如此。检查您的路径是否实际添加到路径列表的一种方法是打开一个新终端并运行“路径”。
                                  【解决方案27】:

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

                                  【讨论】:

                                  • pydot 和 GraphViz 的安装顺序对pydot 能否找到 GraphViz 没有影响。 GraphViz 可执行文件应位于当前路径中,以便pydot 能够检测到它们。
                                  • 顺序无所谓:)
                                  • 顺序无所谓
                                  猜你喜欢
                                  • 2019-10-04
                                  • 2017-01-13
                                  • 2016-12-18
                                  • 2018-07-29
                                  • 2023-03-06
                                  • 2021-08-09
                                  • 2020-05-25
                                  • 2015-02-24
                                  • 2017-09-18
                                  相关资源
                                  最近更新 更多