安装GraphViz以供python调用

本文目录

  • 问题出现
  • 安装Graphviz
    • 下载Graphviz
    • 解压缩文件
    • 添加环境变量
    • 重启python IDE

问题出现

最近在windows7上利用pycaffe的draw_net.py进行.prototxt网络结构配置文件的绘图,结果出现了如下错误:

InvocationException: GraphViz’s executables not found

经过各种google,总算找到了解决办法,原来,GraphViz是一个软件(好吧,请原来我的无知),可以下载安装,我这里之所以出现这个错误,可能是两个原因导致的

  • 电脑没有安装GraphViz
  • 电脑安装了GraphViz,但是,并没有将它的bin目录加入到环境变量PATH中,所以,其他应用程序无法找到它

仔细想想,自己之前好像确实没有安装过它,所以,果断判断为是第一个原因,下面开始安装GraphViz

下面这段话引用Stackoverflow网站关于该问题的一个回答,本文的解决方案主要来自于它
这里写图片描述

安装Graphviz

下载Graphviz

下载地址:graphviz官网

  • 进入下载页,找到Download
    这里写图片描述

  • 点击Download,在弹出的下载页中找到windows的下载链接,并点击
    这里写图片描述

  • 在弹出的windows版本下载界面中选择需要下载的版本,这里我选择了.zip文件
    这里写图片描述

解压缩文件

  • 文件下载完成后,将它解压到某一路径下,例如,我将它解压到了D:\software\caffe-vs\graphviz-2.38,下图展示了解压后的文件结构,可以看到,解压后的文件中只包含一个Release文件夹
    这里写图片描述

添加环境变量

  • 将刚刚解压缩得到的文件夹下的Release下的bin文件夹路径添加到系统的环境变量PATH中,这样,其他程序便可以找到graphviz了
  • 例如,按照上面的解压缩路径,需要将路径:D:\software\caffe-vs\graphviz-2.38\release\bin添加到环境变量PATH

重启python IDE

完成上述所有操作后,重启python IDE,发现draw_net.py终于可以使用了!

注:下面是’draw_net.py’的代码,来自于’caffe/python/draw_net.py’
使用方法:

  • ‘draw_net.py’使用方法(在cmd中输入如下命令)
python /caffe_root/python/draw_net.py file.prototxt file.jpg
  • ‘draw_net.py’代码
#!/usr/bin/env python
"""
Draw a graph of the net architecture.
"""
from argparse import ArgumentParser, ArgumentDefaultsHelpFormatter
from google.protobuf import text_format

import caffe
import caffe.draw
from caffe.proto import caffe_pb2


def parse_args():
    """Parse input arguments
    """

    parser = ArgumentParser(description=__doc__,
                            formatter_class=ArgumentDefaultsHelpFormatter)

    parser.add_argument('input_net_proto_file',
                        help='Input network prototxt file')
    parser.add_argument('output_image_file',
                        help='Output image file')
    parser.add_argument('--rankdir',
                        help=('One of TB (top-bottom, i.e., vertical), '
                              'RL (right-left, i.e., horizontal), or another '
                              'valid dot option; see '
                              'http://www.graphviz.org/doc/info/'
                              'attrs.html#k:rankdir'),
                        default='LR')

    args = parser.parse_args()
    return args


def main():
    args = parse_args()
    net = caffe_pb2.NetParameter()
    text_format.Merge(open(args.input_net_proto_file).read(), net)
    print('Drawing net to %s' % args.output_image_file)
    caffe.draw.draw_net_to_file(net, args.output_image_file, args.rankdir)


if __name__ == '__main__':
    main()

你可能感兴趣的:(python,学习,软件工具类,python,graphviz)