Pillow库在Python3.10.x正常运行,3.11.x导入报错求解决方案
在Python 3.10.x环境中执行from PIL import Image导入Pillow库无报错,但切换到Python 3.11.x环境运行相同代码时,出现以下导入错误:
Traceback (most recent call last):
File "C:\Users\einfa\Downloads\Displaying-Images-With-Turtle_ORIGINAL\main\main.py", line 8, in
from libs.PIL import Image
File "C:\Users\einfa\Downloads\Displaying-Images-With-Turtle_ORIGINAL\main\libs\PIL\Image.py", line 100, in
from . import _imaging as core
ImportError: cannot import name 'imaging' from 'libs.PIL' (C:\Users\einfa\Downloads\Displaying-Images-With-Turtle_ORIGINAL\main\libs\PIL_init.py)
已尝试更换不同版本的Pillow但未解决,确认问题由Python版本差异导致,当前通过pip3 install pillow安装库,需要找到可在两个版本中正常运行的解决方案。
删除项目本地的PIL文件夹
从报错路径可以看出,代码是从项目内部的libs.PIL导入模块,而非通过pip安装的系统/site-packages版本。这个本地PIL文件夹是基于Python 3.10编译的二进制文件,无法在Python 3.11中兼容运行。直接删除项目目录下的main/libs/PIL整个文件夹,让代码自动加载对应Python版本下通过pip安装的Pillow。修正导入语句
将代码中的导入语句改为标准形式:from PIL import Image避免使用
from libs.PIL import Image,确保优先加载系统中为当前Python版本安装的兼容Pillow库。使用虚拟环境隔离版本
为两个Python版本分别创建独立的虚拟环境,避免版本冲突:- 为Python 3.10创建并激活虚拟环境:
python3.10 -m venv venv310 # Windows激活命令:venv310\Scripts\activate # Linux/macOS激活命令:source venv310/bin/activate - 在激活的环境中安装Pillow:
pip install pillow - 重复上述步骤为Python 3.11创建虚拟环境并安装Pillow,运行代码时激活对应环境即可。
- 为Python 3.10创建并激活虚拟环境:
安装兼容双版本的Pillow版本
Pillow 9.5.0及后续版本同时兼容Python 3.10和3.11,可以指定安装该版本:pip install pillow==9.5.0该版本能在两个Python版本中稳定运行,无需额外配置。
内容的提问来源于stack exchange,提问作者HelpersCoockiesss

