pydot-ng
pydot-ng copied to clipboard
[65] GraphViz's executables not found on Windows 7 64-bit
What steps will reproduce the problem?
- Install pydot on Win 7 64
- Try to run the graph write_png() method
What is the expected output? What do you see instead?
You'll see this:
graph.write_png('example2_graph.png')
File "build\bdist.win-amd64\egg\pydot.py", line 1809, in
What version of the product are you using? On what operating system?
Using graphviz 2.28 on Win 7 64-bit.
Please provide any additional information below.
It looks like graphviz uses a different registry setting for Win7 64:
hkey = win32api.RegOpenKeyEx( win32con.HKEY_LOCAL_MACHINE, "SOFTWARE\Wow6432Node\AT&T Research Labs\Graphviz 2.28", 0, win32con.KEY_QUERY_VALUE )
From: https://code.google.com/p/pydot/issues/detail?id=65 Reported by [email protected], Jan 20, 2012
[email protected], Jan 20, 2012 Adding to the potentialKeys works, but I'm not sure how easy this will be to maintain.
hkey = None
potentialKeys = [
"SOFTWARE\\ATT\\Graphviz",
"SOFTWARE\\AT&T Research Labs\\Graphviz",
"SOFTWARE\\Wow6432Node\\AT&T Research Labs\\Graphviz 2.28",
]
[email protected], Feb 13, 2012 Hi mike.naq,
I am unfamiliar with the inner workings of Python. Where can I find this reference to potentialKeys, so I can edit it?
Comment by [email protected], 2012-05-07T07:38:58Z
Adding the changes in comment 2 to pydot.py solved the problem for me. On my computer the pydot.py file is in C:\Python27\Lib\site-packages\pydot-1.0.28-py2.7.egg\
Comment by [email protected], 2012-06-24T11:08:19Z
With a bit of luck they will revert to not use the version in the registry key. I will add that key to the ones that are checked so pydot will find the binaries in this case as well. Assigned to [email protected]
Comment by [email protected], 2012-07-17T04:46:20Z
I have the same problem using graphviz 2.28 on Win 7 64 bit, and the above change to pydot.py did not correct it. Any other ideas about steps to take?
Thanks
Comment by [email protected], 2012-08-09T01:11:10Z
I have run into the same issue. GraphViz 2.28 does not seem to add any keys. I have found that Method 2 seems to find the executables just fine, but this does not solve my issue. The create definition gives this error: raise InvocationException( 'Program terminated with status: %d. stderr follows: %s' % (status, stderr_output) ) Any one have any thoughts on this?
Comment by [email protected], 2012-11-07T20:11:28Z
I run on win 7 32bit, GraphViz 2.28, same problem.
Comment by [email protected], 2012-11-07T22:38:17Z
In win 7 32-bit:
hkey = None
potentialKeys = [
"SOFTWARE\\ATT\\Graphviz",
"SOFTWARE\\AT&T Research Labs\\Graphviz",
"SOFTWARE\\AT&T Research Labs\\Graphviz 2.28",
]
Comment by [email protected], 2013-02-23T20:01:49Z
For anyone who arrives at the same problem on Windows 7 64-bit, I have come up with another possible fix. Set the GraphViz installation path in pydot.py explicitly, ala:
for potentialKey in potentialKeys:
try:
path = "C:\Program Files (x86)\Graphviz2.30"
# The regitry variable might exist, left by old installations
# but with no value, in those cases we keep searching...
if not path:
continue
# Now append the "bin" subdirectory:
#
path = os.path.join(path, "bin")
progs = __find_executables(path)
if progs is not None :
#print "Used Windows registry"
return progs
except Exception, excp:
#raise excp
pass
else:
break
- Note that this has only been tried with Windows 7 Professional 64-Bit with PyDot 1.0.28-py2.7 and GraphViz 2.30, however it did allow for successful operation of calls to GraphViz from the NetworkX package.
Comment by [email protected], 2013-04-10T05:19:25Z
Method proposed by # 10 also works on Windows 7 Professional 32-Bit with PyDot 1.0.28-py2.7 and GraphViz 2.30.
Comment by [email protected], 2013-04-16T05:08:07Z
Same thing happening with Windows7x32 and GraphViz2.30.
There are no entries in the register at all! is there a walk-around for this, please?
Comment by [email protected], 2013-08-22T17:57:02Z
I am running Windows 7 64 bit, and spent a long time trying to solve this issue.
What ultimately worked for me was to open pydot.py and search for the find_graphviz() function. I commented out the entirety of the function and then wrote:
return __find_executables("C:\Program Files (x86)\Graphviz2.32\bin")
The path indicates where all the executables are for Graphviz. I have no idea if this will work for everyone, but try locating that path and enter it as shown into the function and hopefully Graphviz can work for you too!
Comment by [email protected], 2014-01-18T11:56:22Z
Here's a patch that doesn't change existing functionality, but adds a version agnostic search for the Windows GraphViz executable.
Attached windows_exec_search.patch
(view on Gist)
Comment by [email protected], 2014-03-15T15:59:03Z
Thank you so much for the patch boyettel ! Looks great and will hopefully address the problem of finding the binaries in the different versions of Windows.
Comment by flux07, 2014-04-12T12:47:37Z
I had the same problem in windows. Line 534 of pydot.py was trying to import the Graphvis excutable by name, (Graphviz 2.28) but I have a different version installed. I replaced this line with my correct location (Graphviz2.36 in my case) and it worked.
Comment by [email protected], 2014-12-29T10:32:11Z
I just added this registry key to 64bit win7 and everything started working:
[HKEY_LOCAL_MACHINE\SOFTWARE\ATT\Graphviz] "InstallPath"="C:\Program Files (x86)\Graphviz2.38"
Just change it based on your Graphviz installation directory.
In my environment, the graphviz works on Win7-64 with setting PATH. https://graphviz.gitlab.io/_pages/Download/Download_windows.html So In my impression, this problem already solved.