在 CentOS 6 这一经典但已终止生命周期(EOL)的系统上安装 Python 图像处理库 Pillow,是一项颇具挑战性的任务,由于系统软件源和库版本的老旧,直接使用 pip install 命令往往会因为缺少依赖而失败,本文将提供一个详尽、清晰的安装指南,帮助您在 CentOS 6 环境下成功构建和安装 Pillow。

环境准备与依赖安装
在开始安装 Pillow 之前,最关键的步骤是确保所有必需的编译工具和开发库都已就位,Pillow 并非一个纯 Python 库,它依赖于多个底层的 C 语言库来处理不同格式的图像,如果这些库的开发头文件(-devel 包)缺失,Pillow 在安装过程中将无法编译相应的功能模块,导致安装失败或功能不全。
通过 SSH 登录到您的 CentOS 6 服务器,并执行以下操作。
更新系统软件包
尽管 CentOS 6 的官方源已不再更新,但执行一次系统更新仍然是一个好习惯,可以确保已安装的软件包处于最新状态。
sudo yum update -y
安装编译工具组
Pillow 的安装过程需要从源代码编译其 C 扩展,我们必须安装一个包含 C 编译器(如 GCC)、make 等工具的基础开发环境,CentOS 提供了一个方便的软件包组来完成这个任务。
sudo yum groupinstall "Development Tools" -y
这个命令会安装一系列构建软件所需的工具,是后续所有编译工作的基础。
安装 Pillow 核心依赖库
这是整个安装过程中最核心的一环,Pillow 支持多种图像格式,每种格式的支持都依赖于特定的系统库,为了获得一个功能完整的 Pillow,建议安装以下所有依赖的开发包,下表列出了这些依赖及其作用:
| 依赖包名 | 作用 | 对应 Pillow 功能 |
|---|---|---|
zlib-devel |
提供 PNG 压缩支持 | PNG 图像的读写 |
jpeg-devel |
提供 JPEG 格式支持 | JPEG/JFIF 图像的读写 |
libpng-devel |
提供 PNG 格式支持(与 zlib 配合) | PNG 图像的完整支持 |
freetype-devel |
提供字体渲染支持 | 在图像上绘制文字、处理字体 |
lcms2-devel |
提供色彩管理支持 | ICC 色彩配置文件的处理 |
libwebp-devel |
提供 WebP 格式支持 | WebP 图像的读写 |
tcl-devel |
Tcl/Tk 开发库(可选) | 用于 PIL.ImageTk 模块 |
tk-devel |
Tcl/Tk 开发库(可选) | 用于 PIL.ImageTk 模块 |
使用以下命令一次性安装所有这些开发包:
sudo yum install zlib-devel jpeg-devel libpng-devel freetype-devel lcms2-devel libwebp-devel -y
如果您需要使用 Tkinter 相关功能,可以一并安装 tcl-devel 和 tk-devel。
安装 Pip 与 Pillow
在系统环境准备妥当后,接下来就是安装 Python 的包管理工具 Pip,并通过它来安装 Pillow。

安装 Pip
CentOS 6 自带的 Python 版本是 2.6,其官方源中通常不包含 pip 或者版本非常旧,最可靠的方法是通过 Python 官方提供的脚本来安装。
下载 get-pip.py 脚本:
curl "https://bootstrap.pypa.io/pip/2.6/get-pip.py" -o get-pip.py
我们特意指定了适用于 Python 2.6 的路径,使用系统 Python 执行此脚本:
sudo python get-pip.py
安装完成后,可以通过 pip --version 命令验证是否成功。
安装 Pillow
万事俱备,我们可以使用 pip 来安装 Pillow 了,由于 CentOS 6 的环境较为陈旧,直接安装最新版的 Pillow 可能会遇到兼容性问题,推荐安装一个相对较新但稳定的版本,6.x 系列。
sudo pip install 'Pillow<7.0'
'Pillow<7.0' 这个版本指定符会告诉 pip 安装 7.0.0 以下的最新版本,这通常能很好地兼容 CentOS 6 的环境。pip 会自动下载源码包,并利用我们之前安装的所有开发工具和依赖库进行编译,这个过程可能需要几分钟时间。
验证安装
安装过程顺利完成后,我们需要验证 Pillow 是否已正确安装并具备所有功能。
检查 Pillow 版本
pip show Pillow
这个命令会显示已安装的 Pillow 版本、位置等信息。
检查功能模块

进入 Python 交互式环境,并执行以下代码:
from PIL import Image
print(Image.__version__)
# 检查关键解码器是否可用
print("JPEG support:", Image.JPEG)
print("PNG support:", Image.PNG)
print("FREETYPE2 support:", Image.FREETYPE_TYPE)
print("WEBP support:", Image.WEBP)
如果所有输出都显示为 True 或具体的版本号(如 FREETYPE_TYPE),那么恭喜您,Pillow 已经功能齐全地安装在您的 CentOS 6 系统上了,如果某一项显示为 False 或 None,则说明对应的依赖库在安装前未能正确安装,您需要回顾依赖安装步骤,确保没有遗漏。
相关问答 FAQs
为什么我不能直接使用 yum install python-pillow 或 yum install PIL 来安装?
解答: 您当然可以尝试使用 yum 来安装,但这通常不是最佳选择,原因如下:
- 版本过旧:CentOS 6 的官方软件源中的
python-pillow或PIL包版本非常陈旧,可能缺乏对新图像格式的支持(如 WebP)、存在已修复的安全漏洞,或者缺少某些新功能。 - 功能不全:通过
yum安装的包可能没有链接到所有可选的依赖库(如 lcms2, libwebp),导致 Pillow 的部分功能不可用。 - 缺乏灵活性:使用
pip可以轻松地在系统 Python 和虚拟环境中管理不同版本的 Pillow,而yum安装的包是系统全局的,难以进行版本隔离。
尽管 yum 安装看似简单,但为了获得更好的功能、安全性和灵活性,通过 pip 从源码编译安装是更为推荐的做法。
安装 Pillow 后,在运行代码时提示 The _imagingft C module is not installed 错误,这是什么原因?我该如何解决?
解答: 这个错误信息明确指出,Pillow 的 FreeType C 模块未能成功编译或链接,FreeType 模块主要负责在图像上渲染文字,例如使用 ImageDraw 模块的 text() 或 textsize() 方法。
原因:这几乎总是因为在安装 Pillow 之前,系统中没有安装 freetype-devel 开发包,或者 pip 在编译时未能找到它。
解决方法:
- 确认并安装依赖:确保
freetype-devel已经安装,如果不确定,请重新执行安装命令:sudo yum install freetype-devel -y
- 重新安装 Pillow:仅仅安装依赖是不够的,因为 Pillow 已经在缺少该依赖的情况下被编译了一次,您需要强制
pip重新编译 Pillow,让它链接到新安装的 FreeType 库,最佳实践是先卸载,再安装:sudo pip uninstall Pillow sudo pip install 'Pillow<7.0'
完成这两步后,再次运行您的 Python 代码,
_imagingft模块应该就能正常加载了,这个问题同样适用于其他 C 模块,如_imagingjpeg(缺少jpeg-devel)或_imagingwebp(缺少libwebp-devel),解决方法是相同的:安装对应的-devel包,然后重新安装 Pillow。