在Windows系统下安装PygraphViz,Python 2.6版本

21

有没有人在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++

非常感谢您的帮助!


我有完全相同的问题。在Windows Server 2008 R2上使用PygraphViz 0.99.1和graphviz 2.26.3的Python2.6。有任何想法...有人吗? - inspectorG4dget
8个回答

18

我无法让它工作。运行了graphviz-2.38.msi,然后运行了pygraphviz-1.2.win32-py2.7.exe。仍然出现导入错误“需要pygraphviz”。 - SwimBikeRun
你是否将Python发行版路径添加到环境变量中了?如果是的话,你可能需要打开一个新问题来解决。 - geotheory
+Inf,你真是救命恩人。 - Little Bobby Tables

4
我今天也遇到了同样的问题。但是我在他们的FAQ中读到:

问:

如何在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个月前的票据仍然没有解决这个问题。烦死了!

(*) 最近我越来越这样做...


2
实际上,您正在查看https://networkx.lanl.gov/trac/changeset/1073/pygraphviz/trunk/pygraphviz/agraph.py中的固定代码。 显然,您安装的pygraphviz版本比该修复程序旧。 您可以在/ http://networkx.lanl.gov/download/pygraphviz/获取最新版本。 - Aric

4
这是我在Python 2.7中的解决方案。我认为在Python 2.6中应该类似。 前提条件:安装mingw32(如果您使用pythonxy distrib,则包含在其中),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。我尝试使用库链接时失败了。
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 文件夹中。

享受吧!


你是怎么安装MinGW32-xy的?我正在使用MinGW,但是遇到了一些问题。当我尝试安装pygraphviz时,出现了以下错误:cc1.exe: error: unrecognized command line option '-mno-cygwin'。 - Seitaridis
我不记得了,但我认为它是pythonxy发行版的一部分。 - Andrew Filev
3
由于缺少-mno-cygwin选项,mingw32与gcc 4.6.x无法与Python 2.7.2 distutils一起使用。这是已知的Python核心问题。但ptyhonxy仍然附带有4.5.x版本。 - Gabi Davar
@Ηλίας,你解压源代码后,它就在文件夹里了。 - xiao 啸

1
我遇到了相同的问题,最终成功解决了!问题实际上出在 Python 的 msvc9compiler.py 中(是的,编译需要使用 VS8 的 vc9)。错误出现在函数 runtime_library_dir_option() 的第 698 行。不要让它报错,而是让它返回与 library_dir_option() 相同的字符串:
def runtime_library_dir_option(self, dir):
    return "/LIBPATH:" + dir

然后编译,应该就可以工作了。


1
如果您在setup.py第147行中从extension字典中删除'runtime_library_dirs'参数,您的错误消息将消失。 然而,它无法找到cgraph.lib。 如果您更改设置为
library_path=r'C:\Program Files\Graphviz2.26.3\lib\debug\lib'

所有的编译和安装都完成了。你可以导入模块,但是一旦你尝试访问任何东西,它就会崩溃。查看GraphViz的源代码时,似乎Windows版本是C#/.NET - 也许这是我们问题的根源?


0

或者,你可以尝试使用easy_install来避免编译的过程。我安装了"分发",这是easy_install的一个分支。但它也需要pkg-config,你要么编译它,要么获取旧版本。此外,你还必须将pkg-config添加到应用程序路径中。


1
这只在他们为Windows提供了一个易于安装的easy_install版本时才能起作用,而似乎他们没有。虽然这篇文章是五月份的... - Falmarri

0

我成功地在Windows下编译了pygraphviz,并使用以下设置:

Windows 7, WinPython-32bit-2.7.6.3, Graphviz2.38, Microsoft Visual C++ 2008 Express Edition, Pygraphvize 1.3 dev

在setup.py中将第35和36行更改为:

include_dirs = r"C:\Program Files\Graphviz2.38\include" library_dirs = r"C:\Program Files\Graphviz2.38\lib\release\lib"

编译成功后,您将获得一个可用的pygraphviz Python模块。

希望这可以帮助到您。


我做了同样的事情,但它抛出了一堆链接错误,你知道如何修复吗? - ascetic652

0

这对我有效,Python 2.7 32位,PyGraphViz 2.38,VCForPython27,Windows 10 64位。

首先,安装VCForPython27,请参见http://aka.ms/vcpython27

然后,执行以下命令,以便distutils.msvc9compiler可以找到VC编译器。(这需要管理员权限。如果您的Windows是32位,则需要调整注册表键。)

reg add HKLM\SOFTWARE\WOW6432Node\Microsoft\VisualStudio\9.0\Setup\VC -v productdir -t REG_SZ -d "%LocalAppData%\Programs\Common\Microsoft\Visual C++ for Python\9.0" -f

最后,安装PyGraphViz。

set INCLUDE=C:\Program Files (x86)\Graphviz2.38\include
set LIB=C:\Program Files (x86)\Graphviz2.38\lib\release\lib
pip install pygraphviz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接