Pygraphviz/Python3/Mac: 类型错误

Pygraphviz/Python3/Mac: TypeError

我一直在尝试让 Pygraphviz 在 Mac 上与 Python3 一起工作,但我无法解决 TypeError。

具体来说,以下代码的输出(Python3/Eclipse Neon/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

如果我 运行 使用 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不兼容?我记得几年前有人告诉我,对于 "scientific purposes",使用 Python2.x 可能仍然更好。现在还是这样吗?

非常感谢您的提前帮助!

在 bytes/string 处理来自 graphviz 的错误时存在一个错误,该错误出现在 Python 3 中。修复已包含(https://github.com/pygraphviz/pygraphviz/pull/104) in the pygraphviz github master branch. You can download that from https://github.com/pygraphviz/pygraphviz 直到我们发布新版本。

n.b。 pygraphviz 与 Python3 一起正常工作。