相依性#

執行階段相依性#

必要#

當透過像 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 或系統套件管理器),則必須從 https://wxpython.org/pages/downloads/ 手動下載 wxPython wheel 檔案。

  • 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 下載到結帳儲存庫最上層的 subprojects/packagecache 中。如果您想要驗證,則下載的 tarball 的預期 SHA256 雜湊值位於 subprojects/*.wrap 中,但它們也會在解壓縮之前由建置系統檢查。

最低 pip / manylinux 支援 (linux)#

Matplotlib 發布 manylinux wheel 檔案,這些檔案具有可以識別 wheel 檔案的最低 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 commit 更新回報的 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.2GCC:二進位檔

Clang (LLVM)

5

Linux、macOS

clang 5LLVM

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 的情況下建立文件,但建置過程會引發各種警告。