When trying to import PIL (using Pillow), I get the following error:
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
Note the line Referenced from: /usr/local/lib/python2.7/site-packages/PIL/.dylibs/liblzma.5.dylib (which was built for Mac OS X 10.12)
and specifically '(which was built for Mac OS X 10.12)'.
I have a hunch that I may have corrupted something when I attempted to manually install the wrong version of xCode (not compatible with 10.11.6, which is on this computer). I have installed Pillow using pip install Pillow
- but that installation resulted in this error. Is there a way to force pip to install a certain version of Pillow, to see if the problem lies in pip installing a problematic version?
This is a bug in the latest Pillow 5.1.0 release.
It was caused by upgrading Xcode from version 8 to 9.2 for building the binary wheels.
El Capitan 10.11 is the "min macOS to run" for Xcode 8.
Sierra 10.12.6 is the min for Xcode 9.2.
https://en.wikipedia.org/wiki/Xcode#Xcode_7.0_-9.x(since_Free_On-Device_Development
There will be a Pillow 5.1.1 out to fix it at some point.
In the meantime, the workaround is: pip install 'pillow!=5.1.0'
(Or upgrade your macOS, or build from source.)
For more info, see https://github.com/python-pillow/Pillow/issues/3068
That sounds like the wheel uploaded to PyPI was not built for your platform correctly. Unfortunately having the wheel for a PyPI package for your platform is not a guarantee that the wheel will install or work correctly, you're at the mercy of the PyPI package maintainer in this regard.
You should run
pip uninstall Pillow
, download the source directly from PyPI, build it manually and runpip install -e <path to rebuilt package>
to install the wheel you built specifically for your machine.