2019年Python3.7.3+pyenv环境下无法从PIL导入Image求助
解决pyenv下Python3.7.3导入PIL.Image的_imaging错误
嘿,我看你遇到的这个问题,核心是Pillow的编译版本和你pyenv里的Python3.7.3不兼容——从报错里的RuntimeWarning就能看出来,Pillow的_imaging扩展是给支持UCS4宽Unicode的Python编译的,但你当前的Python3.7.3编译参数不对,导致扩展没法正常加载。结合你用的是macOS+pyenv的环境,给你几个针对性的解决步骤:
第一步:彻底卸载现有Pillow
先把可能有问题的Pillow完全清干净,避免残留文件搞事情:
# 先激活你的pyenv 3.7.3环境 pyenv activate 3.7.3 # 彻底卸载Pillow pip uninstall -y Pillow # 手动删掉残留的PIL相关目录(如果有的话) rm -rf ~/.pyenv/versions/3.7.3/lib/python3.7/site-packages/PIL/ rm -rf ~/.pyenv/versions/3.7.3/lib/python3.7/site-packages/Pillow-*.dist-info/
第二步:重新编译Python3.7.3(确保宽Unicode支持)
虽然Python3.3+理论上统一了Unicode实现,但pyenv编译时的参数可能有差异,咱们显式指定参数来确保兼容性:
# 先卸载当前的Python3.7.3 pyenv uninstall -f 3.7.3 # 设置编译环境变量,强制启用UCS4宽Unicode export PYTHON_CONFIGURE_OPTS="--enable-unicode=ucs4" # 重新安装Python3.7.3 pyenv install 3.7.3 # 激活新安装的环境 pyenv activate 3.7.3 # 验证是否生效:运行后输出1114111就是UCS4,没问题;如果是65535就需要重新来一遍 python -c "import sys; print(sys.maxunicode)"
第三步:从源码编译安装Pillow
别用预编译的wheel包(大概率和你的Python编译参数不匹配),强制从源码编译安装:
# 先确保你装了Xcode命令行工具,如果没装的话先跑这个:xcode-select --install pip install --no-binary :all: Pillow
第四步:验证问题是否解决
不管是终端还是PyCharm,都试试导入测试:
from PIL import Image # 可以随便找张图试试能不能正常加载 img = Image.open("/你自己的测试图片路径.jpg") img.show()
额外:PyCharm配置检查
别忘了确认PyCharm用的是你pyenv里的这个Python3.7.3:
- 打开PyCharm的
File > Settings > Project: [你的项目名] > Python Interpreter - 点右上角的齿轮,选
Add - 选
Existing environment,找到~/.pyenv/versions/3.7.3/bin/python,确认后应用就好
要是之后要切换到pypy,建议先把当前Python3.7的问题解决了,再卸载pypy里的Pillow重新安装——pypy装Pillow可能需要额外依赖,比如macOS下的libjpeg之类的,一步一步来更稳。
内容的提问来源于stack exchange,提问作者logic1976
相关产品推荐
相关产品推荐

