從原始碼建置¶
外部程式庫¶
注意
您不需要安裝所有支援的外部程式庫即可使用 Pillow 的基本功能。預設情況下需要 Zlib 和 libjpeg。
注意
在我們的 Docker 映像檔儲存庫中有 Dockerfile,可安裝某些作業系統的相依性。
Pillow 的許多功能需要外部程式庫
libjpeg 提供 JPEG 功能。
Pillow 已在 libjpeg 版本 6b、8、9-9d 和 libjpeg-turbo 版本 8 上進行測試。
從 Pillow 3.0.0 開始,預設情況下需要 libjpeg。可以使用
-C jpeg=disable
旗標停用它。
zlib 提供對壓縮 PNG 的存取
從 Pillow 3.0.0 開始,預設情況下需要 zlib。可以使用
-C zlib=disable
旗標停用它。
libtiff 提供壓縮的 TIFF 功能
Pillow 已在 libtiff 版本 3.x 和 4.0-4.6.0 上進行測試
libfreetype 提供與類型相關的服務
littlecms 提供色彩管理
Pillow 版本 2.2.1 和更低版本使用 liblcms1,Pillow 2.3.0 和更高版本使用 liblcms2。已使用 1.19 和 2.7-2.16 進行測試。
libwebp 提供 WebP 格式。
openjpeg 提供 JPEG 2000 功能。
Pillow 已在 openjpeg 2.0.0、2.1.0、2.3.1、2.4.0、2.5.0 和 2.5.2 上進行測試。
Pillow不支援 Debian Jessie 隨附的較早 1.5 系列。
libimagequant 提供改進的色彩量化
Pillow 已在 libimagequant 2.6-4.3.3 上進行測試
Libimagequant 根據 GPLv3 授權,該授權比 Pillow 授權更具限制性,因此我們將不會發布啟用 libimagequant 支援的二進位檔。
libraqm 提供複雜的文字版面配置支援。
libraqm 提供雙向文字支援 (使用 FriBiDi)、形狀 (使用 HarfBuzz) 和正確的腳本項目化。因此,Raqm 可以支援 Unicode 所涵蓋的大多數書寫系統。
libraqm 取決於以下程式庫:FreeType、HarfBuzz、FriBiDi,如果您的系統中沒有這些程式庫,請確保在安裝 libraqm 之前安裝它們。
如果沒有 libraqm,則不支援設定文字方向或字型功能。
自 8.2.0 版起的 Pillow wheels 包含 libraqm 的修改版本,如果安裝了 libfribidi,則會在執行階段載入該版本。在 Windows 上,這需要編譯 FriBiDi 並將
fribidi.dll
安裝到 動態連結程式庫搜尋順序 (Microsoft Learn) 中列出的目錄 (也會偵測到fribidi-0.dll
或libfribidi-0.dll
)。請參閱建置選項,以瞭解如何建置此版本。先前版本的 Pillow (5.0.0 到 8.1.2) 在執行階段動態連結 libraqm。
libxcb 提供 X11 螢幕擷取支援。
如果您不是從原始碼建置 Python,請確保您已安裝 Python 的開發程式庫。
在 Debian 或 Ubuntu 中
sudo apt-get install python3-dev python3-setuptools
在 Fedora 中,指令是
sudo dnf install python3-devel redhat-rpm-config
在 Alpine 中,指令是
sudo apk add python3-dev py3-setuptools
注意
Fedora 23 上需要 redhat-rpm-config
,但較早版本則不需要。
使用以下指令安裝 Ubuntu 16.04 LTS - 22.04 LTS 的先決條件
sudo apt-get install libtiff5-dev libjpeg8-dev libopenjp2-7-dev zlib1g-dev \
libfreetype6-dev liblcms2-dev libwebp-dev tcl8.6-dev tk8.6-dev python3-tk \
libharfbuzz-dev libfribidi-dev libxcb1-dev
若要安裝 libraqm,請使用 sudo apt-get install meson
,然後參閱 depends/install_raqm.sh
。
最近的 Red Hat、CentOS 或 Fedora 使用以下指令安裝先決條件
sudo dnf install libtiff-devel libjpeg-devel openjpeg2-devel zlib-devel \
freetype-devel lcms2-devel libwebp-devel tcl-devel tk-devel \
harfbuzz-devel fribidi-devel libraqm-devel libimagequant-devel libxcb-devel
請注意,套件管理員可能是 yum 或 DNF,具體取決於確切的發行版本。
使用以下指令為 Alpine 安裝先決條件
sudo apk add tiff-dev jpeg-dev openjpeg-dev zlib-dev freetype-dev lcms2-dev \
libwebp-dev tcl-dev tk-dev harfbuzz-dev fribidi-dev libimagequant-dev \
libxcb-dev libpng-dev
另請參閱測試基礎架構儲存庫中的 Dockerfile
(https://github.com/python-pillow/docker-images),以取得其他已測試發行版本的已知運作安裝程序。
需要 Xcode 命令列工具才能編譯 Pillow 的某些部分。這些工具可透過從命令列執行 xcode-select --install
來安裝。即使您已安裝完整的 Xcode 套件,也需要命令列工具。可能需要執行 sudo xcodebuild -license
來接受授權,然後才能使用這些工具。
安裝外部程式庫最簡單的方法是透過 Homebrew。安裝 Homebrew 後,請執行
brew install libjpeg libtiff little-cms2 openjpeg webp
若要在 macOS 上安裝 libraqm,請使用 Homebrew 安裝其相依性
brew install freetype harfbuzz fribidi
然後參閱 depends/install_raqm_cmake.sh
以安裝 libraqm。
我們建議您使用 PyPI 中預先建置的 wheels。如果您想要手動編譯 Pillow,可以使用 CI 測試和開發所使用的 winbuild
目錄中的建置指令碼。這些指令碼需要 Visual Studio 2017 或更新版本以及 NASM。
這些指令碼也會從原始碼的本機副本安裝 Pillow,因此之後不需要執行安裝指示。
若要使用 MSYS2 建置 Pillow,請確保您執行 MSYS2 MinGW 32 位元或 MSYS2 MinGW 64 位元主控台,而不是直接執行 MSYS2。
以下指示針對 64 位元建置,若要用於 32 位元建置,請將所有出現的 mingw-w64-x86_64-
取代為 mingw-w64-i686-
。
請確保您已安裝 Python 和 GCC
pacman -S \
mingw-w64-x86_64-gcc \
mingw-w64-x86_64-python3 \
mingw-w64-x86_64-python3-pip \
mingw-w64-x86_64-python3-setuptools
使用以下指令在 MSYS2 MinGW 64 位元上安裝先決條件
pacman -S \
mingw-w64-x86_64-libjpeg-turbo \
mingw-w64-x86_64-zlib \
mingw-w64-x86_64-libtiff \
mingw-w64-x86_64-freetype \
mingw-w64-x86_64-lcms2 \
mingw-w64-x86_64-libwebp \
mingw-w64-x86_64-openjpeg2 \
mingw-w64-x86_64-libimagequant \
mingw-w64-x86_64-libraqm
https://www.msys2.org/docs/python/ 指出 setuptools >= 60 無法在 MSYS2 上運作。為了解決此問題,在安裝 Pillow 之前,您必須執行
export SETUPTOOLS_USE_DISTUTILS=stdlib
注意
僅測試過 FreeBSD 10 和 11
請確保您已安裝 Python 的開發函式庫
sudo pkg install python3
在 FreeBSD 10 或 11 上,使用以下指令安裝先決條件:
sudo pkg install jpeg-turbo tiff webp lcms2 freetype2 openjpeg harfbuzz fribidi libxcb
然後參閱 depends/install_raqm_cmake.sh
以安裝 libraqm。
已新增在 Termux 環境中編譯的基本 Android 支援。可以使用以下方式安裝相依性:
pkg install -y python ndk-sysroot clang make \
libjpeg-turbo
這已在 ChromeOS 上的 Termux 應用程式(x86)中測試過。
安裝¶
在您安裝好先決條件後,若要從 PyPI 的原始碼安裝 Pillow,請執行
python3 -m pip install --upgrade pip
python3 -m pip install --upgrade Pillow --no-binary :all:
如果先決條件安裝在您機器的標準函式庫位置 (例如 /usr
或 /usr/local
),則不需要額外的設定。如果它們安裝在非標準位置,您可能需要編輯 setup.py
或 pyproject.toml
,或在命令列上新增環境變數,來設定 setuptools 使用這些位置。
CFLAGS="-I/usr/pkg/include" python3 -m pip install --upgrade Pillow --no-binary :all:
如果 Pillow 之前在沒有必要先決條件的情況下建置,則可能需要手動清除 pip 快取,或使用 --no-cache-dir
選項在沒有快取的情況下建置,以強制使用新安裝的外部函式庫進行建置。
如果您想從原始碼的本地副本安裝,您可以使用 git clone https://github.com/python-pillow/Pillow
從 GitHub 克隆,或從 PyPI 下載並解壓縮壓縮檔。
導覽至 Pillow 目錄後,執行
python3 -m pip install --upgrade pip
python3 -m pip install .
建置選項¶
設定:
-C parallel=n
。也可以使用環境變數:MAX_CONCURRENCY=n
。Pillow 可以使用多進程來建置擴充功能。設定-C parallel=n
會將使用的 CPU 數量設定為n
,或使用設定值 1 來停用平行建置。預設情況下,它會使用 4 個 CPU,如果沒有 4 個 CPU 可用,則會使用盡可能多的 CPU。設定:
-C zlib=disable
、-C jpeg=disable
、-C tiff=disable
、-C freetype=disable
、-C raqm=disable
、-C lcms=disable
、-C webp=disable
、-C jpeg2000=disable
、-C imagequant=disable
、-C xcb=disable
。即使建置機器上存在開發函式庫,也停用建置對應的功能。設定:
-C zlib=enable
、-C jpeg=enable
、-C tiff=enable
、-C freetype=enable
、-C raqm=enable
、-C lcms=enable
、-C webp=enable
、-C jpeg2000=enable
、-C imagequant=enable
、-C xcb=enable
。要求建置對應的功能。如果找不到函式庫,建置會引發例外。Tcl 和 Tk 必須一起使用。設定:
-C raqm=vendor
、-C fribidi=vendor
。這些標記用於編譯 libraqm 的修改版本和一個在執行時動態載入 libfribidi 的墊片。這些用於編譯標準的 Pillow wheels。編譯 libraqm 需要符合 C99 標準的編譯器。設定:
-C platform-guessing=disable
。跳過所有平台相依的包含和函式庫目錄的猜測,適用於在環境變數中設定正確路徑的自動建置系統 (例如 Buildroot)。設定:
-C debug=true
。將除錯標記新增到包含和函式庫搜尋程序中,以將所有搜尋到和找到的路徑轉儲到 stdout。
範例用法
python3 -m pip install --upgrade Pillow -C [feature]=enable
舊版本¶
您可以從 PyPI 上的發佈歷史記錄 下載舊的發行版本,並通過直接 URL 存取,例如 https://pypi.org/project/pillow/1.0/。