I see many questions on the difficulties of properly installing pygraphviz
and graphviz
on Windows for Python 2.7. But no answers that I have found is solving my problem. Here's what I did:
C:\Users\chamar\AppData\Local\Continuum\Anaconda
)C:\Program Files (x86)\Graphviz2.36
The command import pygraphviz
in Python works. But when I want to use say this function nx.graphviz_layout
I get raise ValueError("Program %s not found in path."%prog)
What may cause this problem is that pygraphviz
cannot locate the path of graphviz
. Now, since I installed pygraphviz
using the unofficial windows binary, which file can I modify to link both the library
and include
for graphviz
's path? You would you usually find in the setup.py
of pygraphviz
the library
and include
paths when you don't use the unofficial binaries.
UPDATE 1
I added to PATH
in Regedit
under SOFTWARE
a folder GRAPHIZ with a new key
(default) with value C:\Program Files (x86)\Graphviz2.36\bin
UPDATE 2
I was having an error in the pydot.py
file regarding the difficulty of Python locating the path of Graphviz. I made the changes as follow:
def _graphviz():
if os.sys.platform == 'win32':
path = r"C:/Program Files (x86)/Graphviz2.36/bin/"
progs = __find_executables(path)
return progs
find_graphviz()
{'fdp': 'C:/Program Files (x86)/Graphviz2.36/bin/fdp.exe', 'twopi': 'C:/Program Files (x86)/Graphviz2.36/bin/twopi.exe', 'neato': 'C:/Program Files (x86)/Graphviz2.36/bin/neato.exe', 'dot': 'C:/Program Files (x86)/Graphviz2.36/bin/dot.exe', 'circo': 'C:/Program Files (x86)/Graphviz2.36/bin/circo.exe'}
That seems ok with me but when I execute say:
positions = nx.graphviz_layout(G, prog='twopi', root=0)
I get:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Users\chamar.stu\AppData\Local\Continuum\Anaconda\lib\site-packages\networkx\drawing\nx_agraph.py", line 229, in graphviz_layout
return pygraphviz_layout(G,prog=prog,root=root,args=args)
File "C:\Users\chamar.stu\AppData\Local\Continuum\Anaconda\lib\site-packages\networkx\drawing\nx_agraph.py", line 264, in pygraphviz_layout
A.layout(prog=prog,args=args)
File "C:\Users\chamar.stu\AppData\Local\Continuum\Anaconda\lib\site-packages\pygraphviz\agraph.py", line 1305, in layout
data=self._run_prog(prog,' '.join([args,"-T",fmt]))
File "C:\Users\chamar.stu\AppData\Local\Continuum\Anaconda\lib\site-packages\pygraphviz\agraph.py", line 1251, in _run_prog
runprog=r'"%s"'%self._get_prog(prog)
File "C:\Users\chamar.stu\AppData\Local\Continuum\Anaconda\lib\site-packages\pygraphviz\agraph.py", line 1239, in _get_prog
raise ValueError("Program %s not found in path."%prog)
ValueError: Program twopi not found in path.
Why?
Here are the steps I followed to get pygraphviz working for Python 3.4 (I think if you follow the analogous steps, it should work for Python 2.x). I'm just documenting it here for future visitors to the page :
Pre-requisites :
cp34
indicating the python version.)Steps:
twopi -V
. You should be able to see the Graphviz version printed onto the console.anaconda.bat
, a prompt where you can run python
)pip install pygraphviz‑*$version*-cp34‑none‑win_amd64.whl