Python:pygraphviz和graphviz安装问题

17 投票
3 回答
16016 浏览
提问于 2025-04-18 00:13

我看到很多人在问如何在Windows上正确安装pygraphvizgraphviz,尤其是针对Python 2.7的情况。但是我找不到能解决我问题的答案。以下是我做的事情:

  • 我首先在我的Anaconda(Python)文件夹中,通过这个链接使用非官方的Windows二进制文件安装了pygraphviz(路径是C:\Users\chamar\AppData\Local\Continuum\Anaconda)。
  • 然后我下载了graphviz-2.36.msi,并在默认路径C:\Program Files (x86)\Graphviz2.36下安装了它。

在Python中执行import pygraphviz是可以的。但是当我想用比如说nx.graphviz_layout这个函数时,出现了raise ValueError("Program %s not found in path."%prog)的错误。

造成这个问题的原因可能是pygraphviz找不到graphviz的路径。现在,由于我是通过非官方的Windows二进制文件安装pygraphviz,我应该修改哪个文件来链接graphvizlibraryinclude路径呢?通常情况下,如果不使用非官方的二进制文件,你可以在pygraphvizsetup.py文件中找到libraryinclude的路径。

更新 1

我在RegeditSOFTWARE下添加了一个名为GRAPHIZ的文件夹,并创建了一个新的key(默认值)其值为C:\Program Files (x86)\Graphviz2.36\bin

更新 2

我在pydot.py文件中遇到了一个错误,Python无法找到Graphviz的路径。我做了如下更改:

def _graphviz():
    if os.sys.platform == 'win32':
        path = r"C:/Program Files (x86)/Graphviz2.36/bin/"
        progs = __find_executables(path)
        return progs

find_graphviz()
{'fdp': 'C:/Program Files (x86)/Graphviz2.36/bin/fdp.exe', 'twopi': 'C:/Program Files (x86)/Graphviz2.36/bin/twopi.exe', 'neato': 'C:/Program Files (x86)/Graphviz2.36/bin/neato.exe', 'dot': 'C:/Program Files (x86)/Graphviz2.36/bin/dot.exe', 'circo': 'C:/Program Files (x86)/Graphviz2.36/bin/circo.exe'}

这对我来说似乎没问题,但当我执行比如说:

positions = nx.graphviz_layout(G, prog='twopi', root=0)

我得到了:

    Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Users\chamar.stu\AppData\Local\Continuum\Anaconda\lib\site-packages\networkx\drawing\nx_agraph.py", line 229, in graphviz_layout
    return pygraphviz_layout(G,prog=prog,root=root,args=args)
  File "C:\Users\chamar.stu\AppData\Local\Continuum\Anaconda\lib\site-packages\networkx\drawing\nx_agraph.py", line 264, in pygraphviz_layout
    A.layout(prog=prog,args=args)
  File "C:\Users\chamar.stu\AppData\Local\Continuum\Anaconda\lib\site-packages\pygraphviz\agraph.py", line 1305, in layout
    data=self._run_prog(prog,' '.join([args,"-T",fmt]))
  File "C:\Users\chamar.stu\AppData\Local\Continuum\Anaconda\lib\site-packages\pygraphviz\agraph.py", line 1251, in _run_prog
    runprog=r'"%s"'%self._get_prog(prog)
  File "C:\Users\chamar.stu\AppData\Local\Continuum\Anaconda\lib\site-packages\pygraphviz\agraph.py", line 1239, in _get_prog
    raise ValueError("Program %s not found in path."%prog)
ValueError: Program twopi not found in path.

这是为什么呢?

3 个回答

-1

你可以先安装“easy_install”(可以参考一下如何在Windows上使用Python的“easy_install”... 其实并不简单)。然后你需要安装两个软件包:'python-pygraph' 和 'libgv-python'。

0

你可以在这个网站上找到很多可以直接安装的包:http://www.lfd.uci.edu/~gohlke/pythonlibs/,里面包括你之前尝试安装的那些。我知道我回答得有点晚了,但我刚刚成为这个社区的成员。

13

以下是我为让pygraphviz在Python 3.4上运行而采取的步骤(我觉得如果你按照类似的步骤,也应该能在Python 2.x上运行)。我在这里记录下来,方便以后来这个页面的人参考:

前提条件:

  1. wheel(在较新的版本中应该默认已经安装)
  2. 正确的Windows版pygraphviz (非官方版本)。在Win7 x64上,我选择了“pygraphviz‑$version-cp34‑none‑win_amd64.whl”。 (注意这里的cp34表示Python版本。)
  3. Graphviz 安装程序版本2.38(这个版本是为上面的wheel构建的)

步骤:

  1. 运行Graphviz安装程序
  2. 将Graphviz\bin文件夹添加到你的用户或系统PATH中
  3. 检查:打开命令提示符,执行twopi -V。你应该能在控制台看到Graphviz的版本信息。
  4. 现在进入你的Python环境(例如,运行anaconda.bat,这会打开一个可以运行python的提示符)
  5. 运行pip install pygraphviz‑*$version*-cp34‑none‑win_amd64.whl
  6. 完成了 :)!运行一个示例脚本,看看一切是否顺利。

撰写回答