[英]Pygraphviz/Python3/Mac: TypeError
我一直在尝试让Pygraphviz在Mac上使用Python3,但我无法解决TypeError。
具体来说,以下代码的输出(Python3 / Eclipse Neon / macOS 10.10.5,从此处改编的教程)
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
如果我使用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可能更好。 还是这样吗?
非常感谢您的提前帮助!
在python 3中出现的graphviz错误的字节/字符串处理中有一个错误,该错误已包含在pygraphviz github master分支中( https://github.com/pygraphviz/pygraphviz/pull/104 )。 您可以从https://github.com/pygraphviz/pygraphviz下载该文件,直到发布新版本为止。
nb pygraphviz可在Python3上正常工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.