我已经阅读了其他关于在 Mac OS X 上安装 PIL 时臭名昭著的 _imaging C 模块错误的帖子,并且在任何地方提供的解决方案(包括 PIL 常见问题解答)都没有被证明有帮助。
我从源代码新安装了最新版本的 libjpeg 和 zlib。我已经编辑了每个 Makefile 以在 LD_FLAGS 变量中包含选项 -arch i386 以用于 32 位构建。PIL 安装没有任何问题,并且打印到终端的安装摘要显示 JPEG、TIFF 和 PNG 支持都可以。之后我尝试自测:
new-host:Imaging-1.1.7 ely$ python selftest.py
*** The _imaging C module is not installed
由于各种原因,这很常见。深入探讨,这里我尝试在python中直接导入_imaging。
new-host:Imaging-1.1.7 ely$ python
ActivePython 2.7.1.4 (ActiveState Software Inc.) based on
Python 2.7.1 (r271:86832, Feb 7 2011, 11:33:10)
[GCC 4.2.1 (Apple Inc. build 5664)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import PIL
>>> import _imaging
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: dlopen(/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/PIL/_imaging.so, 2): Symbol not found: _jpeg_resync_to_restart
Referenced from: /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/PIL/_imaging.so
Expected in: dynamic lookup
再次,“找不到符号:_jpeg_resync_to_restart”是臭名昭著的常见问题,许多人认为这与 libjpeg 的路径不正确有关。我一次又一次地检查,我只在我的主目录中安装了 libjpeg(以及 zlib 等),所有这些都安装在单独的文件夹中,来自源代码,所有这些都在文件 setup.py 中正确标记。
所以,PIL 应该从正确的地方获得它的 jpeg 支持(和 zlib 等)。已安装所有依赖项。我可以在我的 sys.path 中看到 _imaging.so,但我仍然收到这个 _jpeg_resync_to_restart 错误。
有没有不链接到替代帖子的想法?我花了大约 7 个小时阅读并尝试从我能找到的每个论坛的帖子中找到可能的解决方案。