安装 igraph
二进制包(推荐)
建议安装包含 C 核心和 Python 接口的二进制包。您可以选择 PyPI 或 Conda。Linux 用户也可以使用其包管理器。
PyPI
PyPI 提供适用于 Windows、Linux 和 macOS 的安装程序。我们的目标是为 Python 3.x 的三个最新次要版本提供二进制包。
要在全局安装 igraph 的 Python 接口,请使用以下命令(您可能需要管理员/root 权限)
$ pip install igraph
如果您更喜欢使用虚拟环境将 igraph 安装到用户文件夹中,请改用以下命令
$ python -m venv my_environment
$ source my_environment/bin/activate
$ pip install igraph
通常,如果您不想激活虚拟环境,可以直接调用其中的 pip
可执行文件
$ python -m venv my_environment
$ my_environment/bin/pip install igraph
Conda
软件包由 conda-forge 提供
$ conda install -c conda-forge python-igraph
与 virtualenv 类似,Conda 也提供虚拟环境。如果您倾向于此选项
$ conda create -n my_environment
$ conda activate my_environment
$ conda install -c conda-forge python-igraph
Linux 和其他系统上的包管理器
igraph 的 Python 接口及其依赖项包含在多个包管理系统中,包括最流行的 Linux 发行版(Arch Linux、Debian 和 Ubuntu、Fedora 等)以及一些跨平台系统,如 NixPkgs 或 MacPorts。
注意
igraph 更新频繁:如果您需要比包管理器提供的版本更新的版本,请使用上面所示的 pip
或 conda
。对于最新版本,请从源代码编译(见下文)。
从源代码编译 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
从源代码安装,或者像 build 这样的符合 PEP 517 的构建前端来构建可安装的 Python wheel。)
首先,从 Github 获取最新源代码
$ git clone https://github.com/igraph/python-igraph.git
或从 PyPI 或 Github 发布页面下载最新版本。如果需要,请解压缩存档。
其次,进入文件夹
$ cd python-igraph
(根据发布版本,它可能具有略微不同的名称)。
第三,如果您从 Github 克隆了源代码,请初始化 igraph C 核心的 git
子模块
$ git submodule update --init
注意
如果您更喜欢将 igraph 编译并链接到现有的 igraph C 核心,例如您使用包管理器安装的那个,则可以跳过 git
子模块初始化步骤。如果您下载的是 tarball,您还需要删除 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
如果您已在系统范围内安装了 tox
,也可以直接从 igraph 源代码树的根文件夹调用 tox
$ tox
故障排除
问:我尝试在 Windows 上安装 igraph 时遇到 DLL 导入错误
答:此错误最常见的原因是您的机器上没有安装 Visual C++ 可再发行库。Python 自身的安装程序应该会安装它,但如果您的系统上未安装,您可以从 Microsoft 下载。
问:我尝试使用 igraph 时遇到关于 Cairo 的错误
答: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.Figure
和 matplotlib.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 用于整个会话/notebook
>>> import matplotlib.pyplot as plt
>>> import igraph as ig
>>> ig.config["plotting.backend"] = "matplotlib"
>>> g = ig.Graph.Famous("petersen")
>>> ig.plot(g)
>>> plt.show()
要在会话/notebook 之间保留此偏好设置,您可以将其存储在 igraph 使用的默认配置文件中
>>> import igraph as ig
>>> ig.config["plotting.backend"] = "matplotlib"
>>> ig.config.save()
从现在开始,igraph 将默认使用 matplotlib 进行绘图。