Python:Could not find a version that satisfies the requirement PIL 报错解决
项目场景:
刚接触Python图像处理的开发者,在学习教程时看到“使用PIL库处理图片”的指引,想按照样学样实现一个简单的图片裁剪功能。按照常规思路,先通过pip安装库,再在代码中导入使用——但这个过程中却遇到了一系列问题。
问题描述
-
首先根绝代码里面的
from PIL import image想要直接下载PIL包
-
按照“安装PIL库”的想法,在命令行执行安装命令:
pip install PIL结果报错,提示“找不到满足要求的PIL版本”(Could not find a version that satisfies the requirement PIL )。
原因分析:
这个问题的核心是PIL和Pillow的“历史渊源”与命名差异:
-
PIL:
PIL(Python Imaging Library)是Python最早的图像处理库,诞生于1995年,功能强大但仅支持Python 2.x。2011年后停止更新,逐渐无法兼容Python 3,逐渐被淘汰。 -
Pillow:
由于PIL的停滞,社区在PIL的基础上fork(分支)出了Pillow项目,目的是:- 支持Python 3.x及后续版本
- 修复BUG并持续维护
- 扩展更多功能(如支持WebP、HEIF等新型格式)
-
命名的“妥协”:
为了兼容大量基于PIL编写的旧代码,Pillow在设计时保留了PIL作为导入名(即from PIL import ...),但安装包名改为pillow(避免与原始PIL冲突)。
这就导致了“安装用pillow,导入用PIL”的“看似矛盾”的现象。
解决方案:
将pip安装的时候名字由PIL换为pillow即可,导入的时候仍然使用 PIL
1. 正确安装库
只能用pillow作为包名安装,这是官方指定的安装方式:
# 安装最新版本
pip install pillow
# 如需指定版本(例如9.5.0)
pip install pillow==9.5.0
2. 正确导入使用
代码中必须用PIL作为导入前缀,这是为了兼容历史代码:
# 正确示例:打开并显示一张图片
from PIL import Image
# 打开图片(替换为你的图片路径)
img = Image.open("test.jpg")
# 显示图片基本信息
print(f"图片格式:{img.format}") # 如 JPEG、PNG
print(f"图片尺寸:{img.size}") # 如 (1920, 1080)
# 简单处理:裁剪图片(左、上、右、下坐标)
cropped_img = img.crop((100, 100, 500, 500))
# 保存处理后的图片
cropped_img.save("cropped_result.png")
3. 避坑提醒
- 不要尝试安装
PIL(早已废弃,无法在Python 3环境使用)。 - 不要在代码中写
from pillow import ...(导入名永远是PIL)。 - 若环境中同时存在旧版PIL和Pillow,可能导致冲突,建议卸载PIL后重新安装Pillow:
pip uninstall PIL # 如有旧版本 pip uninstall pillow pip install pillow
总结来说:Pillow是PIL的“现代继承者”,安装时用pillow,使用时用PIL——记住这个“安装名≠导入名”的特殊情况,就能轻松避开这个新手常见的坑。
更多推荐


所有评论(0)