Я пытаюсь заставить Pygraphviz работать с Python3 на Mac, и я не могу решить TypeError.Pygraphviz/Python3/Mac: TypeError
В частности, выходной сигнал следующего кода (python3/Eclipse, неонового/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? Я помню, как несколько лет назад было сказано, что для «научных целей» все же лучше использовать Python2.x. Это все еще так?
Большое спасибо за вашу помощь заранее!
Обратите внимание на ответ Арика. – Joel
Кроме того, эта ошибка возникает только в том случае, если код создает предупреждение во время выполнения. Я решил причину предупреждения времени выполнения. Теперь мой скрипт завершен без указанной выше ошибки. –