Python无法识别pygraphviz

54

我使用easy_install安装了pygraphviz,但是当我启动Python时出现错误:

>>>import pygraphviz as pgv
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named pygraphviz
>>> 

使用Ubuntu 12.04和gnome-terminal。


我不知道是否已经使用了virtulenv。如何检查我是否在同一个环境中安装了pyhraphviz和python? - Sashko Lykhenko
1
我刚刚输入了 easy_install pyhraphviz。 - Sashko Lykhenko
好的,请在您的gnome终端中执行以下操作:1. pip install virtualenv 2. virtualenv myenv 3. source myenv/bin/activate 4. pip install pygraphviz 然后运行Python并尝试import pygraphviz以检查是否正常工作。 - Sidharth Shah
当你有时间的时候,也可以看一下这个关于pip和virtualenv的不错的教程 - Sidharth Shah
3
好的,我了解了。您可能缺少libgraphviz-dev库。您可以使用sudo apt-get install libgraphviz-dev来安装它。您可以使用dpkg -l | grep 'graphviz'检查是否已安装graphviz。 - Sidharth Shah
显示剩余10条评论
8个回答

139

假设您正在使用Ubuntu,请按照以下步骤进行:

  1. sudo apt-get install graphviz libgraphviz-dev pkg-config
  2. 如果需要,请创建并激活 virtualenv。命令看起来类似于 sudo apt-get install python-pip python-virtualenv
  3. 运行 pip install pygraphviz
  4. 打开终端,导入并检查是否有效。

2
是的,pkg-config 很重要,否则 pip install pygraphviz 将不能编译,因为缺少 library_path - Honghe.Wu
4
导入错误:未定义的符号:Agundirected。请参见此处中描述的内容。 - SparkAndShine
请确保重新启动终端...以使更改生效。 - sumitkanoje

20

在Ubuntu 14.04中,自动检测graphviz库和包含文件存在问题。如果您按照下面的步骤进行操作,可能会安全一些。

1) sudo apt-get install graphviz libgraphviz-dev pkg-config python-pip
2) pip install pygraphviz --install-option="--include-path=/usr/include/graphviz" --install-option="--library-path=/usr/lib/graphviz/" 

1
谢谢,我在尝试通过pip安装pygraphz时,在Ubuntu 16.04 LTS上也可以使用。 - rwenz3l
这些安装选项对我同样在 macOS 上遇到相同错误的情况下也起作用了(运行了brew install graphviz),除了路径为 /usr/local/include/graphviz,库文件是 /usr/local/lib/graphviz,所以完整命令为:pip3.6 install pygraphviz --install-option="--include-path=/usr/local/include/graphviz/" --install-option="--library-path=/usr/local/lib/graphviz" - Chris
在Ubuntu 18.04上,我只需要执行sudo apt-get install graphviz libgraphviz-dev graphviz-dev,然后再执行pip install pygraphviz就可以了。 - haku
也适用于Ubuntu 20.04 LTS。 我需要这个来安装它.. - Lucas Aimaretto

15

在Mac OSX上,以下方法对我有效:

pip install graphviz
pip install cgraph
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig 
cd /usr/local/include/graphviz 
sudo ln -s . graphviz 
pip install pygraphviz

[按建议进行更正,将以前的拼写错误从/urs/local/改为/usr/local/]


与pydot2安装结合使用对我有效,但请在上述说明中将“urs”替换为“usr”。 - Davy
在虚拟环境中,这将如何运作? - justuswolff

15

我使用的是Mac M1,我通过这个方法修复了它。

#install graphviz first
brew install graphviz

#check your graphviz path   
brew info graphviz

#change to your dir
export GRAPHVIZ_DIR="/usr/local/Cellar/graphviz/<VERSION>" #3.0.0 in my case

#finally run this 
pip install pygraphviz --global-option=build_ext --global-option="-I$GRAPHVIZ_DIR/include" --global-option="-L$GRAPHVIZ_DIR/lib"

谢谢您,这是唯一有效的解决方案。只需要将 GRAPHVIZ_DIR 更改为我的本地 HomeBrew 路径即可。 - alxlives
2
在更新的版本中:export GRAPHVIZ_DIR=/opt/homebrew/Cellar/graphviz/7.1.0/ - allprog
对我而言,使用来自文档中的命令起作用: pip install --use-pep517 \ --config-setting="--global-option=build_ext" \ --config-setting="--build-option=-I$(brew --prefix graphviz)/include/" \ --config-setting="--build-option=-L$(brew --prefix graphviz)/lib/" \ pygraphviz - Hans Bambel

15

快速简便的解决方案是:

sudo apt-get install -y python-pygraphviz

使用pip也可以,但请确保您已经安装了graphviz、libgraphviz-dev和pkg-config。

sudo apt-get install -y graphviz libgraphviz-dev pkg-config python-pip
sudo pip install pygraphviz

为什么需要这些?在没有安装libgraphviz-dev的情况下,安装(和使用)python-pygraphviz对我来说似乎很顺利。那么,如果它不是显式依赖项,为什么需要提前安装它?还有其他的依赖项是为什么? - CPBL
这个问题在近3年前已经回答了,他们可能已经改变了pygraphviz的打包方式,所以这些步骤可能不再必要。如果是这种情况,你应该在这里发布一个相应的答案。 - Sean
谢谢!对我来说,仅安装 python-pygraphviz 就解决了问题。 - Bretsko

4
在Mac OSX El Capitan上,Bart Theeten的解决方案可行,但有两个需要注意的地方。首先,请确保您已在计算机上安装了graphviz。您可以使用homebrew:
brew install graphviz

另一个需要注意的是确保将包的路径添加到PYTHONPATH中。

export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python2.7/site-packages/

3
在Ubuntu 15.10+(即2015年左右的Debian)下,快速简便的解决方案是:
sudo apt-get install python-pygraphviz

所有依赖项都会被apt正确地拉取。


0

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