您的位置:首页 > 编程语言 > Python开发

安装GraphViz以供python调用

2016-06-28 21:01 671 查看
本文目录

问题出现

安装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 graphviz