当我安装OS X 10.11时,为什么pip安装Pillow for OS X 10.12?

时间:2018-04-22 19:17:08

标签: python macos pip pillow

尝试导入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安装有问题的版本?

2 个答案:

答案 0 :(得分:5)

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

这是因为将Xcode从版本8升级到9.2以构建二进制轮。

El Capitan 10.11是Xcode 8的“min macOS to run”。

Sierra 10.12.6是Xcode 9.2的最小值。

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

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

与此同时,解决方法是:pip install'pillip!= 5.1.0'

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

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

答案 1 :(得分:0)

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

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