在Windows上安装PygraphViz,Python 2.6

21 投票
8 回答
12038 浏览
提问于 2025-04-15 22:31

有没有人成功在Windows上安装PygraphViz?

因为没有官方的Windows版本,我正在尝试自己编译,但总是编译失败。我不是第一个遇到这个问题的人,但我找不到解决办法。

这是控制台输出的内容:

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++

任何帮助都非常感谢!

8 个回答

4

我今天也遇到了同样的问题。虽然这不是一个完整的答案,但我在他们的常见问题解答中看到:

问:

我该如何在Windows上编译pygraphviz?为什么你们不提供pygraphviz的Windows安装程序?

答:

我们没有Windows开发环境,但希望pygraphviz能在所有平台上运行。如果你在Windows上成功运行,或者愿意帮助测试和分发Windows安装程序,请给我们发个消息。

另请查看第67号票据:https://networkx.lanl.gov/ticket/67

这加上在各种论坛、邮件列表和新闻组上多次求助却没有得到回应,让我觉得在Windows上运行PyGraphviz并不是一件简单的事。

所以我做了下一个明显的选择(*),启动了我的Ubuntu虚拟机,准备用Python创建Graphviz图形。有趣的是,在Ubuntu上从源代码安装也失败,除非你先从源代码安装Graphviz本身,不过可以通过预编译的包来安装,命令是sudo apt-get python-pygraphviz

现在我成了一个快乐的pygraphviz用户。或者说,90%快乐。PGV在Python 2.6上显示了一个os.popen3的弃用警告,而一个关于这个问题的18个月前的票据至今仍未被处理。真让人抓狂!

(*) 最近我越来越常这样做了……

18

我知道这个话题可能已经过时了,但为了帮助现在遇到这个问题的人,我想更新一下。Christoph Gohlke的网站上有一个非官方的Windows Python扩展包安装器,我刚刚用它成功安装了。

4

以下是我在Python 2.7中成功的步骤。我想在Python 2.6中也应该差不多可以用。

前提条件:安装mingw32(如果你使用pythonxy发行版,它里面有),还有Graphviz。

1) 下载pygraphviz的源代码。

2) 编辑setup.py文件,把路径改成类似下面的样子:

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

注意,这里要用\bin,而不是\lib。链接库的时候用libs对我来说不管用。

3) 运行 python setup.py build -c mingw32

步骤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) 把刚刚构建出来的lib.win32-2.7文件夹中的(只有一个名为pygraphviz的子文件夹)复制到你的Python的site-packages文件夹里。

祝你好运!

撰写回答