Windows下Python3.9安装requirements.txt时Pillow依赖报错求助
问题核心原因
你碰到的报错和zlib安装状态、Python3.9兼容性没有直接关系,核心触发逻辑是:pip在解析requirements.txt的依赖时,拉取到了8.2版本以前的老旧Pillow安装包。
这类老版本Pillow发布时Python3.9还未正式上线,本身没有提供Windows平台的预编译wheel安装包,pip只能尝试从源码本地编译。源码编译Pillow需要本地提前配置完整的C++编译环境、zlib/libjpeg等所有图像依赖库的头文件和静态链接库,你用conda装的zlib没有把编译需要的头文件路径加到pip的识别路径里,自然会报找不到zlib的错误,完全没必要硬啃源码编译的坑。
你本地原本安装的Pillow 9.1.1是完全适配Python3.9的正常版本,只是被pip在安装过程中卸载后,尝试装老版本失败才触发了回滚。报错里那句"Pillow does not yet support Python 3.9"是老版本Pillow的安装脚本里写死的固定提示,不代表新版Pillow不支持Python3.9。
可直接落地的解决步骤
按顺序操作即可,不需要配置复杂的编译环境:
- 第一步:修改项目依赖文件的版本限制
打开项目根目录下的requirements.txt,找到所有包含Pillow/pillow的行,不管后面写的什么版本固定规则(比如Pillow==7.1.2这类),统一改成Pillow>=9.0.0,保存文件。 - 第二步:提前安装适配环境的Pillow版本
以管理员身份打开Anaconda Prompt,如果你给这个项目单独建了conda虚拟环境,先执行conda activate 你的环境名切到对应环境,之后执行命令安装适配版本:conda install pillow=9.1.1
等安装完成后,执行pip list | findstr Pillow,确认输出的Pillow版本是9.1.1即安装正常。 - 第三步:跳过Pillow安装剩余依赖
切到项目根目录,执行依赖安装命令时加参数跳过已经装好的Pillow,避免pip重复拉取错误版本覆盖:python -m pip install --upgrade -r requirements.txt --ignore-installed pillow
等命令执行完成就可以正常跑项目了。 - 备用方案:如果不想改requirements.txt,也可以在执行完第二步安装好Pillow 9.1.1之后,直接给安装命令加参数不升级已满足要求的包:
python -m pip install -r requirements.txt --upgrade-strategy only-if-needed
这个参数会让pip判断已安装的Pillow 9.1.1满足版本要求的话,就不会卸载重装。
新手避坑提示
- Windows系统下安装带C扩展的Python包(Pillow、numpy、opencv、scipy这类),优先用conda安装,conda会自动配齐所有底层系统依赖,不会出现缺头文件、缺库的编译错误;如果用pip安装,一定要等pip下载预编译的.whl包,看到"Building wheel for xxx"的提示就说明pip没找到对应你系统/Python版本的预编译包,直接终止命令换安装方式,不要等编译报错。
- 不要随便按照网上的旧教程去装Visual Studio编译环境、手动编译源码包,对初学者来说环境配置复杂度极高,且极易把现有Python环境搞坏。
- 如果执行命令时提示权限不足,直接关闭当前终端,右键选择「以管理员身份运行」后重新执行命令即可,不要手动去删除Python安装目录下的site-packages文件夹内容。
内容的提问来源于stack exchange,提问作者T.Lyons
相关产品推荐
相关产品推荐

