安装 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来从源代码安装,或者使用符合PEP 517标准的构建前端,如build来构建可安装的Python wheel。
首先,从Github获取最新的源代码:
$ git clone https://github.com/igraph/python-igraph.git
或从PyPI或Github发布页面下载最新的版本。如果需要,解压缩存档。
其次,进入文件夹:
$ 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.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:
>>> 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 进行绘图。