OS X 10.11环境下pip安装适配10.12的Pillow且导入PIL报错问题
问题分析与解决
这个报错的核心原因很明确:你的OS X 10.11(El Capitan)系统里没有clock_gettime这个系统调用,但pip默认给你安装了针对OS X 10.12及以上版本编译的Pillow预编译包(wheel),导致动态链接_imaging.so时找不到这个缺失的符号。
解决步骤
- 第一步:先卸载当前不兼容的Pillow版本
pip uninstall -y Pillow - 第二步:强制从源代码编译安装适配你系统的Pillow
用--no-binary :all:参数让pip跳过预编译wheel,从头为你的OS X 10.11编译适配版本:
如果编译失败,大概率是缺少基础开发工具,先运行下面的命令安装Xcode命令行工具:pip install Pillow --no-binary :all:xcode-select --install - 第三步:验证安装是否成功
执行以下命令测试导入:python -c "from PIL import ImageTk, Image; print('Pillow导入成功!')"
补充说明
为什么pip会装错版本?因为Pillow官方提供的预编译wheel包最低支持OS X 10.12,而pip在安装时会优先选择速度更快的预编译包,不会主动检测你的系统版本是否兼容。通过源码编译,就能生成完全适配你OS X 10.11环境的二进制文件,自然就不会出现符号缺失的问题了。
内容的提问来源于stack exchange,提问作者user3.1415927
相关产品推荐
相关产品推荐

