2015-12-02 119 views
2

我最近纔開始在運行Yosemite的我的mac上使用Python 3.5,並且我試圖使用模塊networkx編譯並生成一些圖形/網絡視覺效果楷模。我沒有太多的編程經驗,所以如果我遺漏任何細節,我很抱歉。試圖安裝pydot以與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+兼容。

任何見解或方向將不勝感激!

回答

0

我注意到這個問題,並在PyPi上發佈了一個Python 3兼容版本。原因是pydot/pydot2使用了已經在Python 3中刪除的功能。

對於Linux系統爲Python 3.x的嘗試:

pip3 install pydot3

或一般的Python 2.x中,嘗試:

pip install pydot3

相關問題