前一段将换了个vps,将原来的程序部署到新vps后发现在上传图片或生成缩略图时报错“IOError: decoder zip not available”,当时执行的是将png图片制作一个缩略图,而执行其他图片,比如jpg时就没报错,看来是pil的支持组件缺失了zlib部分了。

知道原因就好办了,安装zlib,重装pil,重启uwsgi即可。

第1步:删除已经安装的PIL:

$ rm -rf /usr/lib/python2.5/site-packages/PIL

$ rm /usr/lib/python2.5/site-packages/PIL.pth

第2步:安装JPEG库和FreeType2库

$ apt-get install libjpeg-dev

$ apt-get install libfreetype6-dev

第3步:编译PIL

建议编译之前最好先删除掉Imaging文件夹,重新用tar从压缩包里解压一个干净的安装程序

$ cd Imaging-1.1.6

$ python setup.py build_ext –i

出现:

PIL 1.1.7 SETUP SUMMARY
--------------------------------------------------------------------
version       1.1.7
platform      linux2 2.7.3 (default, Aug  1 2012, 05:14:39)
              [GCC 4.6.3]
--------------------------------------------------------------------
*** TKINTER support not available
--- JPEG support available
--- ZLIB (PNG/ZIP) support available
--- FREETYPE2 support available
*** LITTLECMS support not available
--------------------------------------------------------------------
To add a missing option, make sure you have the required
library, and set the corresponding ROOT variable in the
setup.py script.

说明zlib安装成功了。

第4步:安装

$ python setup.py install

到此重装完毕,重启uwsgi,打开页面,能正常生成缩略图额。