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

任何帮助,将不胜感激!

4

8 回答 8

18

我很欣赏这可能是一个过时的线程,但为了更新它以供其他目前遇到此问题的人使用,Christoph Gohlke 的用于 Python 扩展包的非官方 Windows 二进制文件中的安装程序刚刚为我工作。

于 2013-04-05T09:43:57.247 回答
4

我今天自己也遇到了同样的问题。这不是一个答案,但我在他们的常见问题解答中读到:

问:

如何在 Windows 下编译 pygraphviz?为什么不分发 pygraphviz Windows 安装程序?

A:

我们没有 Windows 开发机器,但希望 pygraphviz 在所有平台上工作。如果您在 Windows 上取得了成功或愿意帮助测试和分发 Windows 安装程序,请给我们留言。

另见票 67: https ://networkx.lanl.gov/ticket/67

这一点,再加上各种论坛、邮件列表和新闻组上的多次未答复请求,让我相信在 Windows 上运行 PyGraphviz 并不是今天可以简单地完成的事情。

所以我做了下一个显而易见的事情 (*),并在 VirtualBox 之上启动了我的 Ubuntu,以使用 Python 创建 Graphviz 图。奇怪的是,它也无法在 Ubuntu 上从源代码安装,除非您从源代码安装了 Graphviz 本身,但它可以从带有sudo apt-get python-pygraphviz.

所以现在我是一个快乐的 pygraphviz 用户。或者至少 90% 的快乐。PGVos.popen3在 Python 2.6 上显示了一个弃​​用警告,并且一张18 个月大的带有此问题补丁的票仍未被合并。啊!

(*) 我最近越来越多...

于 2010-06-04T04:19:49.460 回答
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 文件夹中

享受!

于 2011-09-24T04:42:46.810 回答
1

如果您从 setup.py 的第 147 行的扩展字典中删除“runtime_library_dirs”参数,您的错误消息就会消失。但是,它找不到 cgraph.lib。如果您将设置更改为

library_path=r'C:\Program Files\Graphviz2.26.3\lib\debug\lib'

一切都符合并安装。您可以导入模块,但是当您尝试访问任何内容时,它就会爆炸。在查看 GraphViz 的源代码时,Windows 版本似乎是 C#/.NET - 也许这就是我们问题的根源?

于 2010-06-04T16:57:45.260 回答
1

遇到同样的问题,我终于让它工作了!问题实际上出在 Python 的 msvc9compiler.py 中(是的,你也需要 VS8 的 vc9 来编译)。错误出现在函数 runtime_library_dir_option() 的第 698 行。与其抛出错误,不如让它返回与 library_dir_option() 相同的字符串:

def runtime_library_dir_option(self, dir):
    return "/LIBPATH:" + dir

然后编译它应该可以工作。

于 2011-07-29T16:13:53.723 回答
0

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

于 2010-12-16T23:26:12.143 回答
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 模块。

希望这会有所帮助。

于 2014-07-17T07:41:28.090 回答
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
于 2016-12-03T08:56:11.780 回答