在Leopard上使用PIL和Libjpeg的Python

3 投票
5 回答
3205 浏览
提问于 2025-04-11 09:33

我在使用PIL处理图片时遇到了一些麻烦,出现了这个错误:

IOError: decoder jpeg not available

我之前是从二进制文件安装PIL的,但没意识到我需要安装libjpeg。

后来我通过fink安装了libjpeg和freetype2。

我还尝试按照http://timhatch.com/网站上的说明重新安装PIL(页面底部的内容)

  • 下载PIL 1.1.6的源代码包,并确保已经安装了开发工具
  • 用这个补丁修改setup.py文件,这样它就能找到你已经安装的Freetype。

    patch -p0 < leopard_freetype2.diff

  • 如果你使用fink,可以运行命令安装libjpeg:sudo apt-get install libjpeg(如果没有fink,就手动编译并调整路径)

但是我还是遇到了同样的错误。

我使用的是Leopard PPC系统。

5 个回答

0

Python的路径还在指向旧版的libjpeg库吗?

如果是的话,你需要修改一下,让它指向新的位置。

当你编译新版本的PIL时,它有没有提示找到libjpeg?如果没有的话,它还是可以顺利编译的(我记得没错的话),但你会在包含文件的时候遇到问题。

你需要在运行./configure的时候调整一下路径。

可能这个差异(diff)对你来说不太适用。你应该多测试一下,然后也许可以提交一个bug报告。

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路径。

1

我最近在一个产品的RHEL系统上部署django项目时,遇到了类似的“jpeg解码器问题”,这个项目需要用到PIL。我下载了PIL,然后直接运行了'python setup.py install',一开始觉得一切都很顺利,直到我碰到了问题。解决办法是:系统上已经安装了libjpeg,所以我又安装了libjpeg-devel。然后我回到PIL的源代码目录,运行了'python setup.py build',在输出信息中,显示PIL配置能够检测到jpeg、gif、freetype等的支持情况,结果显示jpeg支持是正常的。安装完PIL后,一切都正常工作了。

撰写回答