当我安装了 OS X 10.11 时,为什么要为 OS X 10.12 安装 Pillow?

Why is pip installing Pillow for OS X 10.12, when I have OS X 10.11 installed?

尝试导入 PIL(使用 Pillow)时,出现以下错误:

    from PIL import ImageTk, Image
  File "/usr/local/lib/python2.7/site-packages/PIL/ImageTk.py", line 42, in <module>
    from . import Image
  File "/usr/local/lib/python2.7/site-packages/PIL/Image.py", line 60, in <module>
    from . import _imaging as core
ImportError: dlopen(/usr/local/lib/python2.7/site-packages/PIL/_imaging.so, 2): Symbol not found: _clock_gettime
  Referenced from: /usr/local/lib/python2.7/site-packages/PIL/.dylibs/liblzma.5.dylib (which was built for Mac OS X 10.12)
  Expected in: /usr/lib/libSystem.B.dylib
 in /usr/local/lib/python2.7/site-packages/PIL/.dylibs/liblzma.5.dylib

注意行 Referenced from: /usr/local/lib/python2.7/site-packages/PIL/.dylibs/liblzma.5.dylib (which was built for Mac OS X 10.12),特别是“(为 Mac OS X 10.12 构建)”。

我有一种预感,当我尝试手动安装错误版本的 xCode(与这台计算机上的 10.11.6 不兼容)时,我可能已经损坏了某些东西。我使用 pip install Pillow 安装了 Pillow - 但该安装导致了此错误。有没有办法强制pip安装某个版本的Pillow,看看是不是pip安装了有问题的版本?

这听起来像是上传到 PyPI 的轮子没有为您的平台正确构建。不幸的是,为您的平台安装 PyPI 包的轮子并不能保证轮子将正确安装或工作,在这方面您将受到 PyPI 包维护者的摆布。

您应该 运行 pip uninstall Pillow,直接从 PyPI 下载源代码,手动构建它,然后 运行 pip install -e <path to rebuilt package> 安装您专门为您的机器构建的轮子。

这是最新 Pillow 5.1.0 版本中的错误。

这是由于将 Xcode 从版本 8 升级到 9.2 以构建二元轮造成的。

El Capitan 10.11 是 "min macOS to run" Xcode 8.

Sierra 10.12.6 是 Xcode9.2 的最低要求。

https://en.wikipedia.org/wiki/Xcode#Xcode_7.0_-9.x(since_Free_On-Device_Development

Pillow 5.1.1 将在某个时候修复它。

同时,解决方法是:pip install 'pillow!=5.1.0'

(或升级您的 macOS,或从源代码构建。)

有关详细信息,请参阅 https://github.com/python-pillow/Pillow/issues/3068