Search code examples
pythoncwindowsinstallationgraphviz

Installing PygraphViz on Windows, Python 2.6


Anybody out there has successfully installed PygraphViz on Windows?

Since there is not an official release for Windows, I'm trying to build it myself, but it fails to compile. I'm not the first one to face this issue, but I could not find an answer.

This is the console output:

C:\Python26\Lib\site-packages\pygraphviz-0.99.1>c:\python26\python.exe setup.py
install
library_path=C:/Program Files/Graphviz2.26.3/lib/debug/dll
include_path=C:/Program Files/Graphviz2.26.3/include/graphviz
running install
running build
running build_py
running build_ext
building 'pygraphviz._graphviz' extension
C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN\cl.exe /c /nologo /Ox /MD /W
3 /GS- /DNDEBUG "-IC:/Program Files/Graphviz2.26.3/include/graphviz" -Ic:\python
26\include -Ic:\python26\PC /Tcpygraphviz/graphviz_wrap.c /Fobuild\temp.win32-2.
6\Release\pygraphviz/graphviz_wrap.obj
graphviz_wrap.c
warning: I don't know what to do with 'runtime_library_dirs': ['C:/Program Files
/Graphviz2.26.3/lib/debug/dll']
error: don't know how to set runtime library search path for MSVC++

Any help would be appreciated!


Solution

  • Here's what worked for me in Python 2.7. I assume it should work similarly in Python 2.6. Precondition: Install mingw32 (included in pythonxy distrib if you're using it), Graphviz

    1) Download pygraphviz sources

    2) Edit setup.py to change paths to smth like

    library_path=r"c:\Program Files (x86)\Graphviz 2.28\bin"
    include_path=r"c:\Program Files (x86)\Graphviz 2.28\include\graphviz"
    

    Note that it's \bin, not \lib. Linking with libs didn't work for me.

    3) run python setup.py build -c mingw32

    Result of step 3:

    c:\Python27\Lib\site-packages\pygraphviz-1.1>python setup.py build -c mingw32
    library_path=c:\Program Files (x86)\Graphviz 2.28\bin
    include_path=c:\Program Files (x86)\Graphviz 2.28\include\graphviz
    running build
    running build_py
    running build_ext
    building 'pygraphviz._graphviz' extension
    C:\MinGW32-xy\bin\gcc.exe -mno-cygwin -mdll -O -Wall "-Ic:\Program Files (x86)\G
    raphviz 2.28\include\graphviz" -Ic:\Python27\include -Ic:\Python27\PC -c pygraph
    viz/graphviz_wrap.c -o build\temp.win32-2.7\Release\pygraphviz\graphviz_wrap.o
    pygraphviz/graphviz_wrap.c: In function 'agattr_label':
    pygraphviz/graphviz_wrap.c:2855:5: warning: return makes integer from pointer wi
    thout a cast
    writing build\temp.win32-2.7\Release\pygraphviz\_graphviz.def
    C:\MinGW32-xy\bin\gcc.exe -mno-cygwin -shared -s build\temp.win32-2.7\Release\py
    graphviz\graphviz_wrap.o build\temp.win32-2.7\Release\pygraphviz\_graphviz.def "
    -Lc:\Program Files (x86)\Graphviz 2.28\bin" -Lc:\Python27\libs -Lc:\Python27\PCb
    uild "-Wl,-Rc:\Program Files (x86)\Graphviz 2.28\bin" -lcgraph -lcdt -lpython27
    -lmsvcr90 -o build\lib.win32-2.7\pygraphviz\_graphviz.pyd
    

    4) copy the result from the just built lib.win32-2.7 (single sub-folder called pygraphviz) into your Python's site-packages folder

    Enjoy!