Python图像处理库Pillow从源码编译安装指南
Pillow 项目地址: https://gitcode.com/gh_mirrors/pil/Pillow
Pillow是Python生态中功能强大的图像处理库,作为PIL(Python Imaging Library)的分支项目,它提供了丰富的图像处理功能。本文将详细介绍如何从源码编译安装Pillow,帮助开发者根据自身需求定制安装。
一、编译前的准备工作
1.1 必须的外部依赖库
Pillow的核心功能依赖于多个外部库,其中zlib和libjpeg是默认必须安装的:
-
libjpeg:提供JPEG图像格式支持
- 支持版本:6b、8、9-9d以及libjpeg-turbo 8
- 从Pillow 3.0.0开始成为默认必需,可通过
-C jpeg=disable
禁用
-
zlib:提供PNG压缩支持
- 从Pillow 3.0.0开始成为默认必需,可通过
-C zlib=disable
禁用
- 从Pillow 3.0.0开始成为默认必需,可通过
1.2 可选的外部依赖库
根据项目需求,可选择性安装以下库以扩展Pillow功能:
| 库名称 | 功能描述 | 测试版本 | 特殊说明 | |----------------|----------------------------|-----------------------|----------------------------| | libtiff | TIFF压缩功能 | 3.x, 4.0-4.6.0 | | | libfreetype | 字体相关服务 | | | | littlecms | 色彩管理 | 1.19(lcms1), 2.7-2.16 | 2.3.0+使用lcms2 | | libwebp | WebP格式支持 | 0.3.0+支持透明 | 0.1.3不支持透明 | | openjpeg | JPEG 2000功能 | 2.0.0-2.5.2 | 不支持1.5系列 | | libimagequant | 改进的色彩量化 | 2.6-4.3 | GPLv3许可,不包含在二进制中 | | libraqm | 复杂文本布局支持 | | 依赖FreeType/HarfBuzz/FriBiDi | | libxcb | X11屏幕截图支持 | | |
二、各平台编译环境配置
2.1 Linux系统
基础开发环境安装:
# 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
Ubuntu 16.04-22.04完整依赖:
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
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
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
2.2 macOS系统
- 安装Xcode命令行工具:
xcode-select --install
sudo xcodebuild -license
- 使用Homebrew安装依赖:
brew install libjpeg libtiff little-cms2 openjpeg webp
- libraqm依赖安装:
brew install freetype harfbuzz fribidi
2.3 Windows系统
推荐直接使用预编译的wheel包。如需手动编译:
- 需要Visual Studio 2017+和NASM
- 使用项目中的
winbuild
目录下的构建脚本
2.4 MSYS2/MinGW环境
64位环境配置:
pacman -S mingw-w64-x86_64-gcc mingw-w64-x86_64-python3 \
mingw-w64-x86_64-python3-pip mingw-w64-x86_64-python3-setuptools
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
重要提示:
export SETUPTOOLS_USE_DISTUTILS=stdlib
三、安装Pillow
3.1 标准安装方式
python3 -m pip install --upgrade pip
python3 -m pip install --upgrade Pillow --no-binary :all:
3.2 自定义路径安装
若依赖库安装在非标准路径:
CFLAGS="-I/自定义路径/include" python3 -m pip install --upgrade Pillow --no-binary :all:
3.3 本地源码安装
- 下载并解压源码包
- 进入源码目录执行:
python3 -m pip install --upgrade pip
python3 -m pip install .
四、高级构建选项
Pillow提供多种构建配置选项:
-
并行编译控制:
MAX_CONCURRENCY=4 python3 -m pip install Pillow
-
功能启用/禁用:
python3 -m pip install Pillow -C jpeg=enable -C webp=disable
-
特殊构建模式:
# 动态加载fribidi python3 -m pip install Pillow -C raqm=vendor -C fribidi=vendor # 禁用平台猜测 python3 -m pip install Pillow -C platform-guessing=disable # 调试模式 python3 -m pip install Pillow -C debug=true
五、常见问题处理
-
清理构建缓存: 当更改依赖库后,建议使用
--no-cache-dir
选项强制重新构建。 -
版本兼容性:
- libraqm在Pillow 8.2.0+版本中采用动态加载方式
- liblcms1仅支持Pillow 2.2.1及以下版本
-
许可问题: libimagequant采用GPLv3许可,官方二进制包不包含此功能支持
通过本文的详细指导,开发者可以根据实际需求灵活地编译安装Pillow,充分利用其强大的图像处理能力。建议根据项目需求选择必要的功能模块,避免不必要的依赖。
Pillow 项目地址: https://gitcode.com/gh_mirrors/pil/Pillow
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考