python-igraph 手册

用于从 Python 使用 igraph

安装 igraph

安装 igraph

从源代码编译 igraph

您可能想要编译 igraph 以在发布之前测试最近添加的功能,或者在我们的持续开发管道未涵盖的架构上安装 igraph

注意

在所有情况下,Python 接口都需要针对 igraph 核心 C 库的 匹配 版本进行编译。

使用 pip 编译

如果您想要 igraph 的开发版本,请调用

$ pip install git+https://github.com/igraph/python-igraph

pip 非常智能,可以从 Github 下载源代码,初始化 igraph C 核心的子模块,编译它,然后针对它编译 Python 接口并安装它。如上所述,虚拟环境是测试实验包的常用沙箱。

如果您想要来自 PyPI 的最新版本,但更喜欢(或必须)从源代码安装,请调用

$ pip install --no-binary ':all:' igraph

注意

如果您的系统无论如何都没有二进制文件,您可以尝试不使用 --no-binary 选项并获得相同的结果。

逐步编译

本节在实践中很少使用,但解释了如何在没有 pip 的情况下逐步编译和安装 igraph

首先,从 Github 获取 bleeding-edge 源代码

$ git clone https://github.com/igraph/python-igraph.git

或从 PyPIGithub 发布页面下载最近的版本。如果需要,解压缩存档。

其次,进入文件夹

$ cd python-igraph

(它可能有略有不同的名称,具体取决于版本)。

第三,如果您从 Github 克隆了源代码,请初始化 igraph C 核心的 git 子模块

$ git submodule update --init

注意

如果您更喜欢针对现有的 igraph C 核心编译和链接 igraph,例如您使用包管理器安装的那个,您可以跳过 git 子模块初始化步骤。如果您下载了 tarball,您还需要删除 vendor/source/igraph 文件夹,因为 setup 脚本将首先查找 vendored igraph 副本。但是,Python 接口的特定版本保证仅适用于与其捆绑在一起的 C 核心版本(或 git 子模块指向的版本)。

第四,调用标准的 Python setup.py 脚本,例如用于编译

$ python setup.py build

(提示时按 Enter 键)。这将在名为 build/lib.<your system-your Python version> 的子文件夹中编译 Python 接口,例如 build/lib.linux-x86_64-3.8。您可以将该文件夹添加到您的 PYTHONPATH(如果您想直接从中导入),或者您可以调用 setup.py 脚本以从那里安装它

$ python setup.py install

注意

setup.py 脚本采用多个选项来定制安装位置。

测试您的安装

单元测试使用标准的 unittest 模块实现,因此您可以像这样从您的源文件夹运行它们

$ python -m unittest discover

故障排除

问:我正在尝试在 Windows 上安装 igraph,但收到 DLL 导入错误

答:此错误最常见的原因是您的计算机上未安装 Visual C++ Redistributable 库。Python 自己的安装程序应该安装它,但如果它未安装在您的系统上,您可以从 Microsoft 下载

问:我正在尝试使用 igraph,但收到有关名为 Cairo 的内容的错误

答:默认情况下,igraph 使用名为 Cairo 的第三方库进行绘图。如果您的计算机上未安装 Cairo,您可能会收到导入错误。此错误最常见于 Windows 计算机上。

有两种解决此问题的方法:安装 Cairo,或者如果您使用的是最近版本的 igraph,则切换到 matplotlib 绘图后端。

1. 安装 Cairo:正如此处所述,您需要使用您的包管理器 (Linux) 或 homebrew (macOS) 安装 Cairo 标头,然后

$ pip install pycairo

Cairo 项目不为 Windows 提供预编译的二进制文件,但 Christoph Gohlke 维护一个站点,其中包含几个 Python 扩展包(包括 Cairo)的非官方 Windows 二进制文件。因此,在 Windows 上安装 Cairo 及其 Python 绑定的最简单方法是从 Christoph 的站点下载它。请确保您使用的安装程序适合您的 Windows 平台(32 位或 64 位)和您正在使用的 Python 版本。

要检查 Cairo 是否已在您的系统上正确安装,请运行以下示例

>>> import igraph as ig
>>> g = ig.Graph.Famous("petersen")
>>> ig.plot(g)

如果 PyCairo 安装成功,这将显示一个 Petersen 图。

2. 切换到 matplotlib:您可以配置 igraph 以使用 matplotlib 而不是 Cairo。首先,安装它

$ pip install matplotlib

要将 matplotlib 用于单个绘图,请创建一个 matplotlib.figure.Figurematplotlib.axes.Axes 事先 (例如使用 matplotlib.pyplot.subplots())

>>> import matplotlib.pyplot as plt
>>> import igraph as ig
>>> fig, ax = plt.subplots()
>>> g = ig.Graph.Famous("petersen")
>>> ig.plot(g, target=ax)
>>> plt.show()

要将 matplotlib 用于整个会话/笔记本

>>> import matplotlib.pyplot as plt
>>> import igraph as ig
>>> ig.config["plotting.backend"] = "matplotlib"
>>> g = ig.Graph.Famous("petersen")
>>> ig.plot(g)
>>> plt.show()

要在会话/笔记本中保留此首选项,您可以将其存储在 igraph 使用的默认配置文件中

>>> import igraph as ig
>>> ig.config["plotting.backend"] = "matplotlib"
>>> ig.config.save()

从现在开始,igraph 默认将使用 matplotlib 进行绘图。