Python:pygraphviz和graphviz安装问题
我看到很多人在问如何在Windows上正确安装pygraphviz
和graphviz
,尤其是针对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
,我应该修改哪个文件来链接graphviz
的library
和include
路径呢?通常情况下,如果不使用非官方的二进制文件,你可以在pygraphviz
的setup.py
文件中找到library
和include
的路径。
更新 1
我在Regedit
的SOFTWARE
下添加了一个名为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 个回答
你可以先安装“easy_install”(可以参考一下如何在Windows上使用Python的“easy_install”... 其实并不简单)。然后你需要安装两个软件包:'python-pygraph' 和 'libgv-python'。
你可以在这个网站上找到很多可以直接安装的包:http://www.lfd.uci.edu/~gohlke/pythonlibs/,里面包括你之前尝试安装的那些。我知道我回答得有点晚了,但我刚刚成为这个社区的成员。
以下是我为让pygraphviz在Python 3.4上运行而采取的步骤(我觉得如果你按照类似的步骤,也应该能在Python 2.x上运行)。我在这里记录下来,方便以后来这个页面的人参考:
前提条件:
- wheel(在较新的版本中应该默认已经安装)
- 正确的Windows版pygraphviz (非官方版本)。在Win7 x64上,我选择了“pygraphviz‑$version-cp34‑none‑win_amd64.whl”。
(注意这里的
cp34
表示Python版本。) - Graphviz 安装程序版本2.38(这个版本是为上面的wheel构建的)
步骤:
- 运行Graphviz安装程序
- 将Graphviz\bin文件夹添加到你的用户或系统PATH中
- 检查:打开命令提示符,执行
twopi -V
。你应该能在控制台看到Graphviz的版本信息。 - 现在进入你的Python环境(例如,运行
anaconda.bat
,这会打开一个可以运行python
的提示符) - 运行
pip install pygraphviz‑*$version*-cp34‑none‑win_amd64.whl
- 完成了 :)!运行一个示例脚本,看看一切是否顺利。