Leopard上使用Python、PIL和Libjpeg

3

我在使用PIL时遇到了图片支持的问题 - 它给我抛出了以下错误:

IOError: decoder jpeg not available

我从二进制文件安装了PIL,但没有意识到需要libjpeg。
我通过fink安装了libjpeg和freetype2。
我尝试按照http://timhatch.com/(页面底部)的说明重新安装PIL。
下面是具体步骤:
1. 下载PIL 1.1.6源代码包并已经安装了开发者工具。 2. 使用此补丁对setup.py进行修补,以便它可以找到您已经安装的Freetype。 patch -p0 < leopard_freetype2.diff 3. 如果您使用的是fink,则执行sudo apt-get install libjpeg(否则,请手动构建并调整路径)。
但我仍然得到相同的错误。
我的操作系统是Leopard PPC。
5个回答

1
最近在将一个Django项目部署到需要PIL的RHEL产品盒子上时,我遇到了类似的“jpeg解码器问题”。我下载了PIL,并立即运行了“python setup.py install”,一切都正常工作,直到我遇到了这个问题。解决方案:系统已经安装了libjpeg,所以我安装了libjpeg-devel。我回到PIL的源代码并运行了“python setup.py build”,在输出的末尾,它显示PIL配置是否能够检测到对jpeg、gif、freetype等的支持,它说jpeg支持是ok的。安装完PIL后,一切正常。

不错的提示 - 我觉得我离成功更近了。我运行了python setup.py build,发现我有Tkinter、JPEG、ZLIB和FREETYPE2 - 都没问题。但是当我运行python selftest.py时,它返回了相同的错误信息IOError: decoder not available。看来今晚我的计划已经定了。 - thescreamingdrills

1

我遇到了同样的问题,这个人的帖子为我提供了解决方案:

在Imaging-1.1.6子目录中删除PIL子目录和PIL.pth文件

完整细节请参见此处:

http://blog.tlensing.org/2008/12/04/kill-pil-%E2%80%93-the-python-imaging-library-headache/

完成这些步骤后,selftest.py 工作正常。值得注意的是,我正在使用 macports 版本的 jpeg 库,并且已经指定了 JPEG_ROOT 指向我的 macports 根目录中的 include 和 lib 路径。


0
今天我为这个问题困扰了好几个小时。我的建议是,除非您能在前15分钟内解决问题,否则不要一遍又一遍地试错。
以下是几种诊断问题的工具:
1.检查JPEG库架构是否与您的计算机架构匹配:
file /usr/local/lib/libjpeg.7.dylib 

2. 检查 _imaging.so 是否实际链接到您编译的 jpeg 库

cd ImageSrc

python setup.py build_ext -i

otool -L PIL/_imaging.so 

3.尝试导入_imaging.so并查看问题所在

cd PIL

python

import _imaging

4. 最后,尝试从Python的“site-package”目录中删除所有先前安装的PIL*,以确保设置可以正常工作。

python setup.py install

对我来说,这是因为我在Snow Leopard上使用32位Python,通过以下方式安装jpeg库解决了问题:

./configure CFLAGS="-arch i386" --enable-shared --enable-static

0
如果您使用libjpeg进行构建,但自检失败,则可能有另一个PIL的安装程序正在混淆事情。尝试安装它,然后查看自检是否正常工作。
此外,OP中引用的说明书的直接链接在这里

0

Python路径是否仍在查看旧版本的libjpeg二进制文件?

如果是这样,您需要修改它以指向新位置。

当您编译新版本的PIL时,它是否表示找到了libjpeg?它将愉快地编译而不需要它(如果我没记错的话),您将在包含时间看到第一个麻烦的迹象。

您需要在./configure时间调整路径。

差异可能对您无效。您应该进行更多测试,然后可能提交错误报告。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接