依赖项#

运行时依赖项#

必需#

通过 pipconda 等包管理器安装时,强制性依赖项会自动安装。此列表主要用于参考。

可选#

以下软件包和工具并非必需,但可扩展 Matplotlib 的功能。

后端#

Matplotlib 图形可以渲染到各种用户界面。有关可选 Matplotlib 后端及其提供功能的更多详细信息,请参阅什么是后端?

  • Tk(>= 8.5, != 8.6.0 或 8.6.1):用于基于 Tk 的后端。Tk 是大多数标准 Python 安装的一部分,但它本身不属于 Python,因此在极少数情况下可能不存在。

  • PyQt6(>= 6.1)、PySide6PyQt5(>= 5.12)或 PySide2:用于基于 Qt 的后端。

  • PyGObjectpycairo(>= 1.14.0):用于基于 GTK 的后端。如果使用 pip(但不是 conda 或系统包管理器),PyGObject 必须从源代码构建;请参阅 pygobject 文档

  • pycairo(>= 1.14.0)或 cairocffi(>= 0.8):用于基于 cairo 的后端。

  • wxPython(>= 4):用于基于 wx 的后端。如果在 Linux 上使用 pip(但不是 conda 或系统包管理器),wxPython wheels 必须从 https://wxpython.org/pages/downloads/ 手动下载。

  • Tornado(>= 5):用于 WebAgg 后端。

  • ipykernel:用于 nbagg 后端。

  • macOS(>= 10.12):用于 macosx 后端。

动画#

字体处理和渲染#

C 库#

Matplotlib 包含以下库的自有副本

  • Agg:Anti-Grain Geometry C++ 渲染引擎

  • ttconv:一个 TrueType 字体实用程序

此外,Matplotlib 依赖于

  • FreeType(>= 2.3):一个字体渲染库

  • QHull(>= 8.0.2):一个用于计算三角剖分的库(请注意,此版本也称为 2020.2)

安装时下载#

默认情况下,Matplotlib 会下载并构建其自己的 Qhull 和 FreeType 副本。FreeType 的附带版本对于运行测试套件是必需的,因为不同版本的 FreeType 会以不同方式光栅化字符。

使用系统库#

要强制 Matplotlib 使用系统中已安装的 FreeType 或 Qhull 副本,您必须通过 meson-python 将配置设置传递给 Meson

python -m pip install \
  --config-settings=setup-args="-Dsystem-freetype=true" \
  --config-settings=setup-args="-Dsystem-qhull=true" \
  .

在这种情况下,您需要安装 FreeType 和 Qhull 库及其头文件。这可以通过包管理器实现,例如对于 FreeType

# Pick ONE of the following:
sudo apt install libfreetype6-dev  # Debian/Ubuntu
sudo dnf install freetype-devel    # Fedora
brew install freetype              # macOS with Homebrew
conda install freetype             # conda, any OS

(对于 Qhull 请相应调整)。

在 Linux 和 macOS 上,还建议安装 pkg-config,这是一个用于定位 FreeType 的辅助工具

# Pick ONE of the following:
sudo apt install pkg-config  # Debian/Ubuntu
sudo dnf install pkgconf     # Fedora
brew install pkg-config      # macOS with Homebrew
conda install pkg-config     # conda
# Or point the PKG_CONFIG environment variable to the path to pkg-config:
export PKG_CONFIG=...

如果未使用 pkg-config(尤其是在 Windows 上),如果库头文件和库不在标准位置,您可能需要显式设置包含路径(到库头文件)和链接路径(到库)。这可以通过标准环境变量完成——在 Linux 和 macOS 上

export CFLAGS='-I/directory/containing/ft2build.h'
export LDFLAGS='-L/directory/containing/libfreetype.so'

以及在 Windows 上

set CL=/IC:\directory\containing\ft2build.h
set LINK=/LIBPATH:C:\directory\containing\freetype.lib

如果您选择此方法但需要重置并重新构建以更改设置,请记住在重新构建之前清除您的构建产物

git clean -xfd

从源文件#

如果自动下载不起作用(例如,在气隙隔离系统上),则最好使用系统库。但是,您可以手动将 tarball 下载到 checkout 仓库顶层的 subprojects/packagecache 中。如果您希望验证下载的 tarball,其预期的 SHA256 散列值在 subprojects/*.wrap 中,但它们也会在解压前由构建系统进行检查。

最低 pip / manylinux 支持 (Linux)#

Matplotlib 发布了 manylinux wheels,这些 wheels 需要最低版本的 pip 才能识别

  • Python 3.9+:manylinux2014 / pip >= 19.3

在所有情况下,所需版本的 pip 都嵌入在 CPython 源代码中。

构建依赖项#

Python#

pip 通常使用构建隔离来构建包,这意味着 pip 会在构建过程中安装此处列出的依赖项。然而,当为开发安装 Matplotlib 时,构建隔离会通过 --no-build-isolation 标志禁用,这意味着必须显式安装依赖项,可以通过创建虚拟环境(推荐)或手动安装以下软件包来完成

  • meson-python (>= 0.13.1).

  • ninja(>= 1.8.2)。它可能在您的包管理器中可用或与 Meson 捆绑,如果不可用,可以通过 pip 安装。

  • PyBind11(>= 2.13.2)。用于连接 C/C++ 代码与 Python。

  • setuptools_scm(>= 7)。用于根据当前 git 提交更新报告的 mpl.__version__。也是可编辑安装的运行时依赖项。

  • NumPy(>= 1.22)。也是一个运行时依赖项。

编译扩展#

Matplotlib 需要支持 C++17 的 C++ 编译器,并且每个平台都有一个必须在安装编译器之前安装的开发环境。您可能还需要安装编译扩展源代码文件中使用的各种库的头文件。

在某些 Linux 系统上,您可以安装元构建包。例如,在 Ubuntu 上使用提升的权限运行 apt install build-essential

否则,请使用系统发行版的包管理器安装 gcc

安装 Xcode 以进行 Apple 平台开发。

安装 Visual Studio Build Tools

确保选择了“使用 C++ 的桌面开发”,并且选择了并安装了最新版本的 MSVC、“适用于 Windows 的 C++ CMake 工具”以及与您的 Windows 版本兼容的 Windows SDK。它们应该在“可选”副标题下默认选中,但它们是必需的,才能从源代码构建 Matplotlib。

或者,您可以安装一个类似 Linux 的环境,例如 CygWin适用于 Linux 的 Windows 子系统。如果使用 MinGW-64,我们要求 `Mingw-w64-x86_64-headersv6 版本。

我们强烈建议您使用您的平台工具(即 Xcode、VS Code 或 Linux 包管理器)安装编译器。请从以下列表中选择 一个 编译器

编译器

最低版本

平台

备注

GCC

7.2

Linux, macOS, Windows

gcc 7.2, GCC: 二进制文件,

Clang (LLVM)

5

Linux, macOS

clang 5, LLVM

MSVC++

16.0

Windows

Visual Studio 2019 C++

测试依赖项#

本节列出了运行测试所需的额外软件。

必需#

可选#

除了主库的所有可选依赖项之外,如果安装了以下内容,它们也将用于测试。

Python#

这些软件包在创建虚拟环境时安装,否则必须手动安装

外部工具#

如果未发现这些依赖项中的任何一个,则依赖它们的测试将被 pytest 跳过。

注意

在 Windows 上安装 Inkscape 时,请确保选择“将 Inkscape 添加到系统 PATH”,无论是针对所有用户还是当前用户,否则测试将找不到它。

文档依赖项#

Python#

构建文档所需的额外 Python 包列在 doc-requirements.txt 中,可以使用以下方式安装

pip install -r requirements/doc/doc-requirements.txt

doc-requirements.txt 的内容也显示在下面

# Requirements for building docs
#
# You will first need a matching Matplotlib installation
# e.g (from the Matplotlib root directory)
#     pip install --no-build-isolation --editable .[dev]
#
# Install the documentation requirements with:
#     pip install -r requirements/doc/doc-requirements.txt
#
sphinx>=5.1.0,!=6.1.2
colorspacious
ipython
ipywidgets
ipykernel
numpydoc>=1.0
packaging>=20
pydata-sphinx-theme~=0.15.0
mpl-sphinx-theme~=3.9.0
pyyaml
PyStemmer
sphinxcontrib-svg2pdfconverter>=1.1.0
sphinxcontrib-video>=0.2.1
sphinx-copybutton
sphinx-design
sphinx-gallery[parallel]>=0.12.0
sphinx-tags>=0.4.0

外部工具#

必需#

文档需要 LaTeX 和 Graphviz。它们不是 Python 包,必须单独安装。

以下 LaTeX 包

许多 LaTeX 发行版安装程序的完整版本(例如“texlive-full”或“texlive-all”)通常会自动包含这些软件包。

可选#

文档可以在没有 Inkscape 和 optipng 的情况下构建,但构建过程会引发各种警告。