在Leopard上使用PIL和Libjpeg的Python
我在使用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 个回答
Python的路径还在指向旧版的libjpeg库吗?
如果是的话,你需要修改一下,让它指向新的位置。
当你编译新版本的PIL时,它有没有提示找到libjpeg?如果没有的话,它还是可以顺利编译的(我记得没错的话),但你会在包含文件的时候遇到问题。
你需要在运行./configure的时候调整一下路径。
可能这个差异(diff)对你来说不太适用。你应该多测试一下,然后也许可以提交一个bug报告。
我也遇到过同样的问题,这位朋友的帖子给了我解决办法:
删除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路径。
我最近在一个产品的RHEL系统上部署django项目时,遇到了类似的“jpeg解码器问题”,这个项目需要用到PIL。我下载了PIL,然后直接运行了'python setup.py install',一开始觉得一切都很顺利,直到我碰到了问题。解决办法是:系统上已经安装了libjpeg,所以我又安装了libjpeg-devel。然后我回到PIL的源代码目录,运行了'python setup.py build',在输出信息中,显示PIL配置能够检测到jpeg、gif、freetype等的支持情况,结果显示jpeg支持是正常的。安装完PIL后,一切都正常工作了。