安装 igraph

从源代码编译igraph

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

注意

在所有情况下,Python接口需要与igraph核心C库的匹配版本进行编译。如果你使用git来检出源代码树,git可能足够智能,能够将匹配版本的igraph的C核心作为子模块检出到vendor/source/igraph。你可以使用git submodule update --init --recursive手动检出子模块,或者你可以运行git submodule status来打印应与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 选项,并获得相同的结果。

逐步编译

本节在实践中很少使用,但解释了如何从本地检出逐步编译和安装igraph,即_不_依赖pip来获取源代码。(你仍然需要pip来从源代码安装,或者使用符合PEP 517标准的构建前端,如build来构建可安装的Python wheel。

首先,从Github获取最新的源代码:

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

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

其次,进入文件夹:

$ cd python-igraph

(根据发布版本的不同,名称可能略有不同)。

第三,如果你从Github克隆了源代码,请初始化git子模块以获取igraph C核心:

$ git submodule update --init

注意

如果您更喜欢编译并链接igraph到现有的igraph C核心,例如通过包管理器安装的版本,您可以跳过git子模块初始化步骤。如果您下载了压缩包,您还需要删除vendor/source/igraph文件夹,因为设置脚本会首先查找供应商提供的igraph副本。然而,特定版本的Python接口保证仅与捆绑的C核心版本(或git子模块指向的修订版)一起工作。

第四,调用 pip 从源代码编译并安装包:

$ pip install .

或者,你可以调用 build 或其他符合 PEP 517 标准的构建前端来构建一个可安装的 Python wheel。这里我们使用 pipx 在一个独立的虚拟环境中调用 build

$ pipx run build

测试你的安装

使用 tox 或其他标准测试运行工具来运行所有单元测试。 这里我们使用 pipx `_ 来调用 tox

$ pipx run tox

你也可以直接从igraph源代码树的根文件夹调用tox,如果你已经全局安装了tox

$ tox

故障排除

Q: 我正在尝试在Windows上安装igraph,但遇到了DLL导入错误

A: 此错误的最常见原因是您的机器上没有安装Visual C++ Redistributable库。Python的安装程序应该会安装它,但如果您的系统上没有安装,您可以从Microsoft下载

Q: 我正在尝试使用igraph,但遇到了关于Cairo的错误

A: 默认情况下,igraph 使用一个名为 Cairo 的第三方库进行绘图。 如果您的计算机上没有安装 Cairo,您可能会遇到导入错误。这个错误在 Windows 机器上最常见。

这个问题有两种解决方案:安装Cairo,或者如果你使用的是较新版本的igraph,可以切换到matplotlib绘图后端。

1. 安装Cairo: 如这里所述, 你需要使用你的包管理器(Linux)或homebrew (macOS)安装Cairo头文件,然后:

$ pip install pycairo

要检查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 进行绘图。