【问题标题】:Why is pip installing Pillow for OS X 10.12, when I have OS X 10.11 installed?当我安装了 OS X 10.11 时,为什么 pip 为 OS X 10.12 安装 Pillow?
【发布时间】:2018-04-22 19:17:07
【问题描述】:

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

【问题讨论】:

    标签: python macos pip pillow


    【解决方案1】:

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

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

    El Capitan 10.11 是 Xcode 8 的“最小 macOS 运行”。

    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 'pillow!=5.1.0'

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

    欲了解更多信息,请参阅https://github.com/python-pillow/Pillow/issues/3068

    【讨论】:

    • 感谢您的解决方法,这听起来与我的问题的症状完全一样。我会尽快尝试的。
    【解决方案2】:

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

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

    【讨论】:

    • 您的意思是下载、构建和安装我在执行pip list 时看到的wheel 模块(单词错误?)?或者下载、构建和安装枕轮? ...因为我找到了 Pillow wheel here,但还没有找到如何构建和重新安装 wheel(目前显示为 v 0.31.0)。
    • 另外,我应该使用 .whl 文件,还是应该使用 source 文件?我意识到这听起来可能是一个愚蠢的问题,但我对使用 python 和这个轮子概念是全新的......
    • 来源是这些文件中列出的.tar.gz文件; pypi.org/project/Pillow/#files Wheel 是一个带有二进制库的文件,pip 使用它来安装包而不需要构建。这允许用户在没有编译器的计算机上安装软件包。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-30
    • 2020-07-25
    • 2016-05-10
    • 1970-01-01
    • 2017-03-04
    • 1970-01-01
    相关资源
    最近更新 更多