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

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

169979 次浏览

发生这种情况是因为我在安装 pydot 之后安装了 Graphviz。因此,皮多没能找到它。按照正确的顺序重新安装解决了问题。

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

进口皮多 Find _ Graphviz () 确保在“ bin”后面有一个斜杠,这样它就可以从文件夹中获取所有内容。我尝试不使用斜杠,上面的代码没有返回任何内容,但是在添加了斜杠之后,它返回了它需要的 Graphviz 可执行文件和它们的路径。

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

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


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

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

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

“未找到 GraphViz 的可执行文件”

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

  1. 如果您还没有安装 GraphViz (我使用了 MSI 下载)
  2. 获取 gvedit. exe 的路径(对我来说是“ C: Program Files (x86) Graphviz2.34 bin”)
  3. 将此路径添加到计算机的 PATH
  4. 进入环境设置以设置路径的一种方法是单击以下每个按钮/菜单选项: start-> computer-> system Properties-> Advanced 設置-> 環境變量
  5. 单击“编辑用户路径”
  6. 将此字符串添加到变量值列表的末尾(包括 分号) : < strong > ; C: Program Files (x86) Graphviz2.34 bin
  7. 单击 OK
  8. 重新启动 Python IDE

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

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

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

import os


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

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

我也有过同样的问题,最后我通过参观图书馆解决了它。

该库考虑将路径设置为 C: 程序文件 ATT Graphviz bin,但默认情况下,将 Graphviz 安装到 C: Program Files (x86) Graphviz,并使用32位标准,因此 皮多无法获得所需的路径。 只需根据脚本的要求转移目录,就可以开始了。

附注:-考虑对环境变量进行等效的更改。

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

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

我必须添加到 PATH: C: 用户用户名 Anaconda3库 bin Graphviz

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

一定要在这之后重新开始。 应该可以

对于 Windows 8.1和 python 2.7,我通过以下步骤修复了这个问题

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

设置路径变量

控制面板 > 系统及保安 > 系统 > 高级系统设定 > 环境变数 > 路径 > 编辑 Add‘ C: Program Files (x86) Graphviz2.38 bin’添加‘ C: Program Files (x86) Graphviz2.38 bin’

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

我找到了一个人工解决方案: Sudo apt-get install Graphviz

Write (‘ test.dot’) Dot-Tps test.dot-o outfile.ps

你可以在这里的文件: https://github.com/jecs89/LearningEveryDay/tree/master/GP

尝试了所有解决方案/发布/博客中描述的所有安装顺序,最终发现水蟒无法读取 Environment 变量。关闭了水蟒和斯派德。然后在管理员模式下打开 Anaconda (在 Windows64位 OS 机器上) ,然后打开 Spyder。脚本在 PYDOT 调用中工作得很好。

我不是在使用 Windows 机器,而是在 Linux 平台上。我在使用 python 包 pyAgrum 绘制贝叶斯网络时遇到了这个可执行文件未找到的问题。PyAgrum 使用 Graphviz 绘制网络。我在 python3.6.4环境(即 conda install <package name>)中使用 anaconda 平台安装 pyagrum 和 Graphviz。

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

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

我想这个解决方案会在我的背景之外起作用。这种解决方案的主要缺点是每次重新启动内核时都需要这样做。

我正在运行一台 Windows10机器,也有一些问题。 我通过 msi 安装程序安装了 Graphviz。通过系统设置添加对我来说不起作用。

我使用 msi 删除了安装,并使用了 Windows 包管理器 巧克力味的。 删除安装的版本是必要的,否则 Chocolatey 将不会安装。

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

下面是我为上面提到的问题所做的工作,我使用的是 Windows10os 和 python3.6.5

  1. 通过 点击这里安装 PIP

  2. 打开命令提示符并键入命令“ pip install Graphviz”

  3. 到我的电脑(这台电脑)和搜索与关键字“ Graphviz”

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

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

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

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

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

  9. 添加您在记事本中复制的路径,然后单击一系列“确定”

现在你可以享受使用 Graphviz 了

我正在用 Anaconda 3.6.5开发 Windows 10。我没有管理权,所以如果有人是在像我这样的情况下,这个解决方案工程完美。

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

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

进口操作系统 Environ [‘ PATH’] . split (os.pathsep) 这将列出您环境中的所有路径。看看他们,如果你的 Graphviz 路径不在这里,然后去找到它,并复制路径,像上面我的例子。 然后键入以下内容: os.environ['PATH'] += os.pathsep + 'C:\\Users\\User_Name\\AppData\\Local\\Continuum\\anaconda3\\Library\\bin\\graphviz'

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

在这里安装 Graphviz 并添加它的 bin 路径解决了我的问题

Https://graphviz.gitlab.io/_pages/download/download_windows.html

Pip install Graphviz 本身似乎还不够

你可以使用 pydotplus 代替 pydot.then 遵循以下步骤:

首先,找到 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. between the two blocks add this(Your Graphviz's executable path):

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

  3. after adding the result is:

    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. save the changed file then you can run it successfully.

  5. you'd better save it as bmp file because png file will not work. picture is here

关于 Graphviz 需要知道的一些事情:

  1. Graphviz 不仅是一个 python 模块,它还是一个独立的程序。我相信你需要两者来使 Graphviz 工作。
  2. 独立的 Graphviz 程序最初是由 AT & T 开发的,是开源的,后来被放弃了。包的当前维护者忘记包含 Windows 注册表项,以便 Python 可以找到程序的可执行文件。
  3. Py 的第620行包含一个备份路径,如果在注册表中没有找到 Graphviz,可以使用该路径查找它。它使用旧的 ATT 文件路径。将文件路径更新到计算机上的内容(您需要具有管理员权限) ,Graphviz 应该可以使用 pydotplus。

例如:

# 以防万一,试试默认的..。 Path = r“ C: Program Files (x86) Graphviz2.38 bin”

如果你不想在路径变量上浪费时间(例如,如果你不是管理员) ,如果你正在处理窗口,你可以做下面的事情来帮我解决这个问题。

在编辑器中打开 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')

解决方案很简单,只需要从 给你下载并安装 Graphviz。

然后将 path 变量设置为 bin 目录,在我的示例中是 C:\Program Files (x86)\Graphviz2.38\bin。最后,做 conda install python-graphviz,它应该工作良好。

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

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”。前任”。这似乎比添加一个“。“ bat”对于每个可执行的 pydot 调用..。

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

我使用了 conda install python-grapviz 那么 康达安装比多 然后 康达安装 pydot 加 然后就成功了。

所以:

conda install python-graphviz
conda install pydot
conda install pydotplus

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

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

我尝试了几种方法,但都在 Windows 10上失败了,最后这个方法对我很有效: 尝试安装它直接从 Graphviz 网站,只要谷歌“安装 Graphviz”,我相信它将是第一个选项。