我最近才开始在运行 Yosemite 的 mac 上使用 Python 3.5,我正在尝试使用模块 networkx 来编译和生成图形/网络模型的一些视觉效果。我没有那么多的编程经验,所以如果我遗漏任何细节,我深表歉意。
我已经成功安装了 networkx(我能够使用其中的命令),但目前正在努力安装一个可促进绘图生成的可选模块:GraphViz。我尝试通过命令提示符运行 setup.py install 命令来安装 GraphViz,但 GraphViz 安装似乎需要另一个模块 PyDot(更具体地说是 PyDot2:pydot2-1.0.33-py3.5.egg.info)。这就是问题所在,因为我似乎无法让 PyDot 正常工作 - 在运行使用 PyDot 的 networkx 命令时,我不断收到以下错误(test2.py 是一个测试图形模型):
Traceback (most recent call last):
File "/Users/mainuser/Downloads/test2.py", line 6, in <module>
nx.draw_graphviz(G)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/networkx/drawing/nx_pylab.py", line 982, in draw_graphviz
pos = nx.drawing.graphviz_layout(G, prog)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/networkx/drawing/nx_pydot.py", line 257, in graphviz_layout
return pydot_layout(G=G,prog=prog,root=root,**kwds)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/networkx/drawing/nx_pydot.py", line 277, in pydot_layout
D=P.create_dot(prog=prog)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/pydot.py", line 1802, in <lambda>
lambda f=frmt, prog=self.prog : self.create(format=f, prog=prog))
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/pydot.py", line 1966, in create
self.write(tmp_name)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/pydot.py", line 1895, in write
dot_fd = file(path, "w+b")
NameError: name 'file' is not defined
在做了一些研究和玩耍之后,我觉得问题是我安装的 PyDot 版本与 Python 3.5 不兼容。但是,我不明白这是怎么回事,因为我安装了 PyDot2,它明确表示它与 Python 3+ 兼容。
任何见解或方向将不胜感激!