Skip to content
This repository has been archived by the owner on Nov 19, 2018. It is now read-only.

[65] GraphViz's executables not found on Windows 7 64-bit #7

Open
prmtl opened this issue Mar 8, 2015 · 17 comments
Open

[65] GraphViz's executables not found on Windows 7 64-bit #7

prmtl opened this issue Mar 8, 2015 · 17 comments

Comments

@prmtl
Copy link
Contributor

prmtl commented Mar 8, 2015

What steps will reproduce the problem?

  1. Install pydot on Win 7 64
  2. 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
File "build\bdist.win-amd64\egg\pydot.py", line 1911, in write
File "build\bdist.win-amd64\egg\pydot.py", line 1953, in create
pydot.InvocationException: GraphViz's executables not found

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

@prmtl
Copy link
Contributor Author

prmtl commented Mar 8, 2015

[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",
        ]

@prmtl
Copy link
Contributor Author

prmtl commented Mar 8, 2015

[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?

@prmtl prmtl changed the title [Issue 65] GraphViz's executables not found on Windows 7 64-bit GraphViz's executables not found on Windows 7 64-bit Mar 8, 2015
@prmtl
Copy link
Contributor Author

prmtl commented Mar 8, 2015

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\

@prmtl
Copy link
Contributor Author

prmtl commented Mar 8, 2015

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]

@prmtl
Copy link
Contributor Author

prmtl commented Mar 8, 2015

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

@prmtl
Copy link
Contributor Author

prmtl commented Mar 8, 2015

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?

@prmtl
Copy link
Contributor Author

prmtl commented Mar 8, 2015

Comment by [email protected], 2012-11-07T20:11:28Z

I run on win 7 32bit, GraphViz 2.28, same problem.

@prmtl
Copy link
Contributor Author

prmtl commented Mar 8, 2015

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",
        ]

@prmtl
Copy link
Contributor Author

prmtl commented Mar 8, 2015

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.

@prmtl
Copy link
Contributor Author

prmtl commented Mar 8, 2015

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.

@prmtl
Copy link
Contributor Author

prmtl commented Mar 8, 2015

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?

@prmtl
Copy link
Contributor Author

prmtl commented Mar 8, 2015

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!

@prmtl
Copy link
Contributor Author

prmtl commented Mar 8, 2015

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)

@prmtl
Copy link
Contributor Author

prmtl commented Mar 8, 2015

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.

@prmtl
Copy link
Contributor Author

prmtl commented Mar 8, 2015

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.

@prmtl
Copy link
Contributor Author

prmtl commented Mar 8, 2015

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.

@prmtl prmtl changed the title GraphViz's executables not found on Windows 7 64-bit [65] GraphViz's executables not found on Windows 7 64-bit Mar 8, 2015
@sakaia
Copy link

sakaia commented Dec 27, 2017

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.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

2 participants