2016-10-27 7 views
0

PygraphvizをMacでPython3と連携させようとしていますが、TypeErrorを解決できません。Pygraphviz/Python3/Mac:TypeError

具体的には、次のコードの出力(のpython3 /エクリプスネオン/ MacOSの10.10.5、hereから適合チュートリアル)

import networkx as nx 
import queueing_tool as qt 
import pygraphviz as pgv 

a = pgv.AGraph() 
print(a._get_prog('fdp')) 

g = qt.generate_random_graph(200, seed=3) 
q = qt.QueueNetwork(g, seed=3) 
q.max_agents = 20000 
q.initialize(100) 
q.simulate(10000) 

pos = nx.nx_agraph.graphviz_layout(g.to_undirected(), prog='neato') 

は、次のエラーである。

/usr/local/bin/fdp //<-- this shows that Eclipse finds 'fdp' after adding /usr/local/bin to $PATH, ERROR in the following: 
Traceback (most recent call last): 
    File "/Users/flurin/Documents/workspace/pedQN/main.py", line 14, in <module> 
    pos = nx.nx_agraph.graphviz_layout(g.to_undirected(), prog='neato') 
    File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/networkx/drawing/nx_agraph.py", line 228, in graphviz_layout 
    return pygraphviz_layout(G,prog=prog,root=root,args=args) 
    File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/networkx/drawing/nx_agraph.py", line 262, in pygraphviz_layout 
    A.layout(prog=prog,args=args) 
    File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/pygraphviz/agraph.py", line 1358, in layout 
    data = self._run_prog(prog, ' '.join([args, "-T", fmt])) 
    File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/pygraphviz/agraph.py", line 1338, in _run_prog 
    warnings.warn(b"".join(errors), RuntimeWarning) 
TypeError: cannot use a string pattern on a bytes-like object 

Iを実行する場合Python 2.7.xを使った同じコード( 'print arg'を 'print arg'に変更するだけで済みます)私は次のような出力を得ました(警告が出ますが、動作します):

/usr/local/bin/fdp 
/usr/local/lib/python2.7/site-packages/pygraphviz/agraph.py:1338: RuntimeWarning: Warning: node 0, position [ 5.50797903 7.08147823], expected two floats 
Warning: node 12, position [ 5.44649018 7.80314765], expected two floats 
[... here other warnings of the same kind] 
Warning: Overlap value "prism" unsupported - ignored 

    warnings.warn(b"".join(errors), RuntimeWarning) 

私の質問は、pygraphvizをPython3でも動作させるにはどうしたらいいですか?私はどこを見るか分かりません。ターミナルやEclipseから上記のコードを実行したときのエラーには違いがないことに注意してください。

Python3との非互換性はありますか?私は数年前に "科学的な目的"のためにPython2.xを使う方が良いかもしれないと言われたことを覚えています。これは今の場合ですか?

ご協力いただきありがとうございます。

+1

Aricの答えを見てください。 – Joel

+0

また、このエラーは、コードによってランタイム警告が生成された場合にのみ発生します。私はランタイム警告の原因を解決しました。これで私のスクリプトは上記のエラーなしで完了しました。 –

答えて