Python 3 networkx draw_graphviz()不起作用

pte*_*gon 5 graphviz networkx python-3.x

我只想用Python 3 networkx和graphviz绘制一个简单的图形:

import networkx as nx

G = nx.complete_graph(3)
nx.draw_graphviz(G)
Run Code Online (Sandbox Code Playgroud)

我正在使用ubuntu14.04和IPython3,像往常一样我做了pip3安装networkx并运行代码给了我:

ImportError: pydot could not be loaded: http://code.google.com/p/pydot/
Run Code Online (Sandbox Code Playgroud)

我尝试安装pydotplus并运行代码:

/usr/local/lib/python3.4/dist-packages/networkx/drawing/nx_pydot.py in pydot_layout(G, prog, root, **kwds)
    294 
    295         if isinstance(node,list):
--> 296             node=node[0]
    297         pos=node.get_pos()[1:-1] # strip leading and trailing double quotes
    298         if pos != None:

IndexError: list index out of range
Run Code Online (Sandbox Code Playgroud)

和pydot2还:

/usr/local/lib/python3.4/dist-packages/pydot.py in write(self, path, prog, format)
   1893             prog = self.prog
   1894 
-> 1895         dot_fd = file(path, "w+b")
   1896         if format == 'raw':
   1897             data = self.to_string()

NameError: name 'file' is not defined
Run Code Online (Sandbox Code Playgroud)

我花了很长时间搜索和安装其他pydots和pygraphviz组合已经但仍然没有运气.

虽然这可能是相关的: pydot和graphviz错误:无法导入dot_parser,无法加载点文件,这无法解决Python 3中的问题.

mfi*_*tzp 2

您可以通过编辑#292以下行来解决此问题:

    pydot_node = pydot.Node(make_str(n)).get_name().encode('utf-8')
Run Code Online (Sandbox Code Playgroud)

删除末尾的编码:

    pydot_node = pydot.Node(make_str(n)).get_name() #.encode('utf-8')
Run Code Online (Sandbox Code Playgroud)

我已经在这里报告了这个错误/修复。