저는 Pygraphviz를 Mac에서 Python3과 함께 사용하려고 노력해 왔으며 TypeError를 해결할 수 없습니다.Pygraphviz/Python3/Mac : TypeError
/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 실행할 경우 특히
, 다음 코드의 출력 (Python3/이클립스 네온/맥 OS 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')
다음 오류이며 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를 사용하는 것이 더 좋을 수 있다고 말한 것을 기억합니다. 아직도 그렇습니까?
미리 도움을 주셔서 감사합니다.
Aric의 대답을 확인하십시오. – Joel
또한이 오류는 코드에서 런타임 경고를 생성하는 경우에만 발생합니다. 나는 런타임 경고의 원인을 해결했다. 이제 위의 오류없이 스크립트가 완료됩니다. –