将Pillow从8.3.2版本升级至9.1.1版本:关于libjpeg-turbo与libjpeg-dev依赖的疑问
关于Pillow 9.1.1升级与JPEG依赖的说明
好问题!我刚好研究过Pillow 9.x版本的构建逻辑,给你梳理清楚两种核心场景的情况:
核心前提
Pillow 9.0.0及以上版本官方预编译包确实是基于libjpeg-turbo构建的,但这并不意味着你必须在服务器上单独安装该库才能使用升级后的Pillow——分两种情况看:
1. 使用PyPI预编译wheel包(推荐/大部分场景)
如果你是通过pip install pillow==9.1.1直接安装PyPI上的预编译包,那么完全不需要在服务器上安装libjpeg-turbo或者现有的libjpeg-dev:
- 预编译wheel已经把libjpeg-turbo的二进制依赖打包在内了,安装后直接就能正常处理JPEG图片,和之前使用Pillow 8.x的体验完全一致。
- 这种情况下,你甚至可以保留服务器上现有的
libjpeg-dev,不会有任何冲突。
2. 从源代码编译安装Pillow(特殊场景)
如果你的环境必须从源码编译Pillow(比如自定义编译参数、非x86架构服务器等),这时候就需要依赖JPEG开发库,但依然不需要强制替换成libjpeg-turbo:
- 你可以继续使用现有的
libjpeg-dev,Pillow 9.x依然完全兼容标准的libjpeg库,只是相比libjpeg-turbo,JPEG解码/编码的性能会稍差一些。 - 如果你想享受libjpeg-turbo带来的性能提升,可以安装对应系统的libjpeg-turbo开发包(比如Debian/Ubuntu是
libjpeg-turbo-dev,CentOS是libjpeg-turbo-devel),编译时Pillow会自动检测并优先使用它。
总结
除非你是从源码编译Pillow且主动追求性能提升,否则完全不需要更换或新增libjpeg-turbo依赖,直接升级Pillow即可正常使用。
内容的提问来源于stack exchange,提问作者sambid shrestha




