依赖项#
运行时依赖项#
必需#
当通过 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 documentation .
wxPython (>= 4):用于基于 wx 的后端.如果在 Linux 上使用 pip(但不是 conda 或系统包管理器),则必须从 https://wxpython.org/pages/downloads/ 手动下载 wxPython wheels.
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 的 vendored 版本才能运行测试套件,因为不同版本的 FreeType 栅格化字符的方式不同.
使用系统库#
要强制 Matplotlib 使用系统中已安装的 FreeType 或 Qhull 副本,您必须 pass configuration settings to Meson via meson-python :
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
如果你走这条路线,但需要重置和重建以更改你的设置,记得在重新构建之前清除你的 artifacts:
git clean -xfd
从源文件#
如果自动下载不起作用(例如,在气隙系统中),最好使用系统库. 但是,您可以手动将 tarball 下载到签出存储库顶层的 subprojects/packagecache 中. 下载的 tarball 的预期 SHA256 哈希值位于 subprojects/*.wrap 中(如果您希望验证它们),但它们也会在解压缩之前由构建系统进行检查.
最低 pip / manylinux 支持 (linux)#
Matplotlib 发布了 manylinux wheels ,它具有可识别 wheel 的最低 pip 版本
Python 3.9+:
manylinux2014/ pip >= 19.3
在所有情况下,所需版本的 pip 都嵌入在 CPython 源代码中.
构建依赖项#
Python#
通常, pip 使用 :external+pip build isolation 构建包,这意味着 pip 在构建过程中安装此处列出的依赖项. 但是,当 --no-build-isolation 时,可以通过 :external+pip installing Matplotlib for development 标志禁用构建隔离,这意味着必须显式安装依赖项,可以通过 creating a virtual environment (推荐) 或手动安装以下软件包:
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 平台开发.
确保已选择"使用 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 软件包管理器)安装编译器. 从此列表中选择一个编译器:
compiler |
minimum version |
platforms |
notes |
|---|---|---|---|
GCC |
7.2 |
Linux, macOS, Windows |
|
Clang (LLVM) |
5 |
Linux, macOS |
|
MSVC++ |
16.0 |
Windows |
测试依赖项#
This section lists the additional software required for running the tests.
必需#
pytest (>= 7.0.0)
可选#
除了主库上的所有可选依赖项之外,如果安装了以下依赖项,则将使用它们进行测试.
Python#
这些包在 creating a virtual environment 时安装,否则必须手动安装:
pandas 用于测试与 Pandas 的兼容性
pikepdf 用于 pgf 和 pdf 后端的一些测试
psutil 用于测试交互式后端
pytest-cov (>= 2.3.1) 用于收集覆盖率信息
pytest-flake8 用于使用 flake8 测试编码标准
pytest-timeout 用于限制卡住测试的运行时间
pytest-xdist 用于并行运行测试
pytest-xvfb 用于在不弹出窗口的情况下运行测试 (Linux)
pytz 用于测试 pytz int
sphinx 用于测试我们的 sphinx 扩展
xarray 用于测试与 xarray 的兼容性
外部工具#
Ghostscript (>= 9.0,用于渲染 PDF 文件)
Inkscape (用于渲染 SVG 文件)
WenQuanYi Zen Hei 和 Noto Sans CJK 字体,用于测试字体回退和非西方字体
如果未发现任何这些依赖项,则 pytest 将跳过依赖于它们的测试.
备注
在 Windows 上安装 Inkscape 时,请确保选择"将 Inkscape 添加到系统 PATH",无论是针对所有用户还是当前用户,否则测试将找不到它.
文档依赖项#
Python#
构建 documentation 所需的其他 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 包:
collection-fontsrecommended
许多 LaTex 发行版安装程序的完整版本,例如"texlive-full"或"texlive-all",通常会自动包含这些软件包.
可选#
可以在没有 Inkscape 和 optipng 的情况下构建文档,但是构建过程会引发各种警告.
字体 xkcd script 或 Comic Neue
字体 "Times New Roman"