依赖项#
运行时依赖#
必需的#
当通过 pip
或 conda
这样的包管理器安装时,强制依赖项会自动安装。此列表主要供参考。
可选的#
以下包和工具不是必需的,但扩展了 Matplotlib 的功能。
后端#
Matplotlib 图形可以渲染到各种用户界面。有关可选的 Matplotlib 后端及其提供的功能的更多详细信息,请参阅 什么是后端?。
Tk (>= 8.5, != 8.6.0 或 8.6.1): 用于基于 Tk 的后端。Tk 是大多数标准 Python 安装的一部分,但它不是 Python 本身的一部分,因此在极少数情况下可能不存在。
PyQt6 (>= 6.1), PySide6, PyQt5 (>= 5.12), 或 PySide2: 用于基于Qt的后端。
PyGObject 和 pycairo (>= 1.14.0): 用于基于GTK的后端。如果使用pip(而不是conda或系统包管理器),PyGObject必须从源代码构建;请参阅 pygobject文档。
wxPython (>= 4): 用于基于 wx 的后端。如果在 Linux 上使用 pip(而不是 conda 或系统包管理器),必须从 https://wxpython.org/pages/downloads/ 手动下载 wxPython 轮子。
Tornado (>= 5): 用于 WebAgg 后端。
ipykernel: 用于 nbagg 后端。
macOS (>= 10.12): 用于 macosx 后端。
动画#
ffmpeg: 用于保存电影。
ImageMagick: 用于保存动画GIF。
字体处理与渲染#
LaTeX (使用 cm-super 和 underscore) 以及 GhostScript (>= 9.0): 用于使用 LaTeX 渲染文本。
fontconfig (>= 2.7): 用于在Linux上检测系统字体。
C 库#
Matplotlib 自带以下库的副本:
Agg
: Anti-Grain Geometry C++ 渲染引擎ttconv
: 一个 TrueType 字体工具
此外,Matplotlib 依赖于:
安装期间下载#
默认情况下,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
从源文件#
如果自动下载不起作用(例如,在无网络系统上),最好使用系统库。不过,您可以手动将压缩包下载到检出仓库顶层的 subprojects/packagecache
中。如果您希望验证这些压缩包,预期的 SHA256 哈希值在 subprojects/*.wrap
中,但在解压之前,构建系统也会检查它们。
最小 pip / manylinux 支持 (linux)#
Matplotlib 发布了 manylinux 轮子,这些轮子需要 pip 的最低版本才能识别。
Python 3.9+:
manylinux2014
/ pip >= 19.3
在所有情况下,所需的 pip 版本都嵌入在 CPython 源代码中。
构建依赖项#
Python#
pip
通常使用 构建隔离 来构建包,这意味着 pip
会在构建过程中安装此处列出的依赖项。然而,当 为开发安装 Matplotlib 时,通过 --no-build-isolation 标志禁用了构建隔离,这意味着必须显式安装依赖项,可以通过 :ref:`创建虚拟环境 <dev-environment>`(推荐)或手动安装以下包:
meson-python (>= 0.13.1)。
ninja (>= 1.8.2)。这可能可以通过你的包管理器获得,或者与Meson捆绑在一起,但如果无法获得,可以通过
pip
安装。PyBind11 (>= 2.6). 用于连接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平台开发。
确保选择了“使用 C++ 的桌面开发”,并且选择了最新版本的 MSVC、“适用于 Windows 的 C++ CMake 工具”以及与您的 Windows 版本兼容的 Windows SDK,并已安装。它们应默认在“可选”子标题下被选中,但这是从源代码构建 Matplotlib 所必需的。
或者,您可以安装一个类似Linux的环境,如 CygWin 或 Windows Subsystem for Linux。如果使用 MinGW-64,我们要求 v6 版本的 `Mingw-w64-x86_64-headers
。
我们强烈建议您使用平台工具安装一个编译器,例如 Xcode、VS Code 或 Linux 包管理器。请从以下列表中选择 一个 编译器:
编译器 |
最低版本 |
平台 |
笔记 |
---|---|---|---|
GCC |
7.2 |
Linux, macOS, Windows |
|
Clang (LLVM) |
5 |
Linux, macOS |
|
MSVC++ |
16.0 |
Windows |
测试依赖项#
本节列出了 运行测试 所需的额外软件。
必需的#
pytest (>= 7.0.0)
可选的#
除了主库的所有可选依赖项外,如果安装了以下内容,将用于测试。
Ghostscript (>= 9.0, 用于渲染PDF文件)
Inkscape (用于渲染SVG文件)
pandas 用于测试与 Pandas 的兼容性
pikepdf 用于 pgf 和 pdf 后端的某些测试中
在测试交互式后端时使用了 psutil
pytest-cov (>= 2.3.1) 用于收集覆盖率信息
使用 flake8 测试编码标准的 pytest-flake8
pytest-timeout 用于限制运行时间,以防测试卡住
pytest-xdist 用于并行运行测试
pytest-xvfb 在没有窗口弹出的情况下运行测试(Linux)
pytz 用于测试 pytz int
sphinx 用于测试我们的 sphinx 扩展
用于测试字体回退和非西方字体的 WenQuanYi Zen Hei 和 Noto Sans CJK 字体
xarray 用于测试与 xarray 的兼容性
如果未发现这些依赖项中的任何一个,那么依赖于它们的测试将由 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
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 包:
dvipng 是一个用于将 DVI 文件转换为 PNG 图像的工具。
underscore 是一个CTAN包。
cm-super 是一个 LaTeX 包,用于提供高质量的 Computer Modern 字体。
collection-fontsrecommended
许多 LaTex 发行版的完整安装程序,例如 "texlive-full" 或 "texlive-all",通常会自动包含这些包。
可选的#
文档可以在没有 Inkscape 和 optipng 的情况下构建,但构建过程会引发各种警告。
Inkscape 是一个开源的矢量图形编辑器。
optipng 是一个用于优化PNG图像文件的开源工具。
字体 xkcd script 或 Comic Neue
字体 "Times New Roman"