[pytorch]:graphviz.backend.execute.ExecutableNotFound: failed to execute WindowsPath(‘dot‘),

Error:graphviz.backend.execute.ExecutableNotFound: failed to execute WindowsPath('dot'), make sure the Gra.......

 在配置Torch的网络结构化工具torchziv时,pip install torchziv 安装后,虽然自动将graphviz安装好。但是运行时,出现上面的错误。

需要强调:如果直接pip install torchziv,会直接将graphviz,torchziv两个都安装好,但是这种方法无法将graphviz导入系统路径。

2) 先卸载torchziv ,

pip install torchziv

但是graphviz是个软件,不能单独用Pip安装。 

3)然后下载graphviz的安装包 ,网址: 

https://graphviz.org/download/

 [pytorch]:graphviz.backend.execute.ExecutableNotFound: failed to execute WindowsPath(‘dot‘),_第1张图片

 4、下载之后,点击下载成功的.exe文件(本文简称graphziv.exe)进行安装,可以选择自己想要安装的位置,路径不能出现中文。一路默认即可(不要勾选,路径 和 桌面图标,因为我们自己设置环境变量的路径),。(这是我的安装位置:D:\Program Files\Graphviz\bin。位置不重要只要设置好环境变量进行) 

5.安装好之后,设置系统环境变量

此电脑右键----->属性----->高级系统设置----->环境变量----->系统环境变量(s)----->path----->新建
粘贴文件的安装路径。如下:两个路径最好都要有,特别这个.exe文件 

[pytorch]:graphviz.backend.execute.ExecutableNotFound: failed to execute WindowsPath(‘dot‘),_第2张图片

 然后,再进入Anaconda Prompt,进入cuda 虚拟环境,然后pip install torchziv即可

重新启动pycharm软件。 

测试,制作一个py文件和一个graph.txt,如下

输入数据:

graph.txt:

代码应能读取规定格式的TXT文档作为输入,格式如下:

第一行:图的节点数N,边数V

后续V行: 图中每一条边的起点、终点

最后一行:待求解目标的起点、终点

 

16 20
1 2
1 5
2 3
2 4
3 4
3 5
4 5
5 7
5 14
5 6
6 9
7 4
9 4
10 6
11 5
12 7
13 8
13 6
15 13
16 10
2 5

主函数

#!/usr/bin/env python3
#find_all_routes_of_2_points.py
#fumiama 20201001
import sys
from graphviz import Digraph
 
def exitWithError(*error):
    print(*error)
    exit()
 
def printGraph2Pdf(grf): grf.render('graph-output/output.gv', view=True)
 
def printRoute(stackList):
    global nodeNumber
    nodeNumber += 1
    dot.node(str(nodeNumber), stackList[0])
    for node in stackList[1:]:
        nodeNumber += 1
        dot.node(str(nodeNumber), node)
        dot.edge(str(nodeNumber-1), str(nodeNumber))
 
def addEdge(a, b):
    global edgeLinks
    if a not in edgeLinks: edgeLinks[a] = set()
    if b not in edgeLinks: edgeLinks[b] = set()
    edgeLinks[a].add(b)
    edgeLinks[b].add(a)
 
def loadGraph(fileName):
    try: f = open(fileName, 'r')
    except: exitWithError("打开文件失败, 请检查文件名是否正确或程序是否有权限访问")
    global size, edgeLinks
    size, edgeCount = map(int, f.readline().split())
    print("节点:", size, "边数:", edgeCount)
    for i in range(1, size+1): dot.node(str(i), str(i))
    for i in range(edgeCount):
        a, b = f.readline().split()
        addEdge(a, b)
        dot.edge(a, b)
    re = f.readline()
    f.close()
    return re
 
def findAllRoutes(start, end):
    global edgeLinks, stack
    stack.append(start)
    if start == end:
        print("找到路径:", stack)
        printRoute(stack)
        stack.pop()
    else:
        for nextPoint in edgeLinks[start]:
            if nextPoint not in stack: findAllRoutes(nextPoint, end)
        stack.pop()
 
def rmRoute2Itself(start):
    for point in edgeLinks:
        if point != start and start in edgeLinks[point]:
            edgeLinks[point].remove(start)
 
if __name__ == '__main__':
 
    dot = Digraph(comment='Gragh2Print')
    dot.edge_attr.update(arrowhead='none')
    dot.graph_attr['rankdir'] = 'LR'
 
    edgeLinks = dict()
    size = 0
 
    stack = []
    nodeNumber = 0
 
    # sys = "D:find_all_routes_of_2_points.py pdf graph.txt"
    # if len(sys.argv) != 3: exitWithError("用法:", sys.argv[0], "[pdf|nopdf] 文件位置")
    a, b = loadGraph("graph.txt").split()
    print("起点:", a, "终点:", b)
    rmRoute2Itself(a)
    nodeNumber = size + 1
    findAllRoutes(a, b)
    print("生成pdf格式图形化报告...")
    printGraph2Pdf(dot)

输出效果

节点: 16 边数: 20
起点: 2 终点: 5
找到路径: ['2', '3', '5']
找到路径: ['2', '3', '4', '5']
找到路径: ['2', '3', '4', '7', '5']
找到路径: ['2', '3', '4', '9', '6', '5']
找到路径: ['2', '4', '5']
找到路径: ['2', '4', '7', '5']
找到路径: ['2', '4', '9', '6', '5']
找到路径: ['2', '4', '3', '5']
找到路径: ['2', '1', '5']
生成pdf格式图形化报告...

生成pdf

[pytorch]:graphviz.backend.execute.ExecutableNotFound: failed to execute WindowsPath(‘dot‘),_第3张图片

 打开pdf文件显示为:

[pytorch]:graphviz.backend.execute.ExecutableNotFound: failed to execute WindowsPath(‘dot‘),_第4张图片

 

方法二:(我没有测试过)

或者可以在代码中添加如下两行代码:

import os
os.environ[“PATH”] += os.pathsep + ‘E:\gravized\Graphviz\bin’

你可能感兴趣的:(pytorch,python,开发语言)