python中PIL安装简单教程


Posted in Python onApril 21, 2016

python 的PIL安装是一件很头疼的的事, 如果你要在python 中使用图型程序那怕只是将个图片从二进制流中存盘(例如使用Scrapy 爬网存图),那么都会使用到 PIL
这库,而这个库是出名的难安装.

它的表现为,如果你使用 Scrapy 的ImagePipeline 它就会默认使用PIL,如果没有正确安装图型解码器那会都会出现以下的错误:

IOError: decoder jpeg not available
在网上找过很多方法都还是不行,也不明究竟,开始以为是 PIL 这个库的安装有问题,但即使正确安装了PIL仍然是会出现 以上的错误.原因就在于解码器 decoder 的问题.

后来找到一个叫 Imaging-1.1.7 的包,胡乱地安装了一下,结果行了就没有理会. 技术债是始终要还的, 只是没想到这么快, 临近项目发布又在 Ubuntu 上遇到同的样问题了,
直接用这个包,但结果却...

答案当然是让人痛苦的, 还是 IOError ~

好吧,痛苦的事就让它过去吧, 经过一番的折腾后最后发现一线曙光, 请留意以下的表信息:

--------------------------------------------------------------------
PIL 1.1.7 SETUP SUMMARY
--------------------------------------------------------------------
version    1.1.7
platform   linux2 2.7.6 (default, Jun 22 2015, 17:58:13)
       [GCC 4.8.2]
--------------------------------------------------------------------
*** TKINTER support not available
*** JPEG support not available
*** ZLIB (PNG/ZIP) support not available
*** FREETYPE2 support not available
*** LITTLECMS support not available
--------------------------------------------------------------------

注: 这个表是在 Imaging 的安装目录中 用 python setup.py build 指令后显示出来.

如果你看得详细一点就发现了吧, 对! 所有的图片解码都不支持. 问题不是出在PIL上,而是在 decoder上. 我之前在 OSX上能牛屎地安装成功一定是之前安装了这些 decoder.

为了让其它的朋友不会再掉入此坑, 特意将安装方法整理了一下:

Mac OSX
brew update
brew install libjpeg libpng
装这两个就够了

Ubuntu 14.0.4
sudo apt-get install libjpeg-dev libpng12-dev libfreetype6-dev libtiff-dev
Linux 上比较惨一些,要多装几个包.

这还不够的, 最好就直接用 Pillow 这个 python 包来取代手工下载 Imaging 这个包吧,直接用以下指令

pip install -I --no-cache-dir -v Pillow
这个指令执行完毕会有一大堆的信息,不用管它,只要找到以下这个就行了:

--------------------------------------------------------------------
PIL SETUP SUMMARY
--------------------------------------------------------------------
version   Pillow 3.2.0
platform   linux2 2.7.6 (default, Jun 22 2015, 17:58:13)
       [GCC 4.8.2]
--------------------------------------------------------------------
*** TKINTER support not available
--- JPEG support available
*** OPENJPEG (JPEG2000) support not available
--- ZLIB (PNG/ZIP) support available
*** LIBTIFF support not available
--- FREETYPE2 support available
*** LITTLECMS2 support not available
*** WEBP support not available
*** WEBPMUX 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.

To check the build, run the selftest.py script.

这下行了! 还有一个小提示: 请留意看上面一行, To check the build, run the selftest.py script. 这个selftest.py 可是个好东东噢.至少可以知道成功没。

祝大家安装成功!

Python 相关文章推荐
python导出chrome书签到markdown文件的实例代码
Dec 27 Python
Python下载网络小说实例代码
Feb 03 Python
python读取文件名并改名字的实例
Jan 07 Python
Python 多维List创建的问题小结
Jan 18 Python
pymysql模块的使用(增删改查)详解
Sep 09 Python
关于Python-faker的函数效果一览
Nov 28 Python
Django中modelform组件实例用法总结
Feb 10 Python
在python中实现求输出1-3+5-7+9-......101的和
Apr 02 Python
Python数组拼接np.concatenate实现过程
Apr 18 Python
Python unittest如何生成HTMLTestRunner模块
Sep 08 Python
python爬取新闻门户网站的示例
Apr 25 Python
python使用openpyxl库读写Excel表格的方法(增删改查操作)
May 02 Python
Python for Informatics 第11章之正则表达式(四)
Apr 21 #Python
Python for Informatics 第11章之正则表达式(二)
Apr 21 #Python
Python for Informatics 第11章 正则表达式(一)
Apr 21 #Python
编写Python爬虫抓取暴走漫画上gif图片的实例分享
Apr 20 #Python
Ruby使用eventmachine为HTTP服务器添加文件下载功能
Apr 20 #Python
Python实现HTTP协议下的文件下载方法总结
Apr 20 #Python
详解Python命令行解析工具Argparse
Apr 20 #Python
You might like
PHP 定界符 使用技巧
2009/06/14 PHP
php UTF8 文件的签名问题
2009/10/30 PHP
20个PHP常用类库小结
2011/09/11 PHP
php file_get_contents取文件中数组元素的方法
2017/04/01 PHP
Yii2框架中一些折磨人的坑
2019/12/15 PHP
不同浏览器对回车提交表单的处理办法
2010/02/13 Javascript
基于jQuery的消息提示插件之旅 DivAlert(三)
2010/04/01 Javascript
使用Js让Html中特殊字符不被转义
2013/11/05 Javascript
showModalDialog模态对话框的使用详解以及浏览器兼容
2014/01/11 Javascript
jQuery trigger()方法用法介绍
2015/01/13 Javascript
jQuery添加和删除输入文本框标签代码
2016/05/20 Javascript
基于Bootstrap里面的Button dropdown打造自定义select
2016/05/30 Javascript
JS获得一个对象的所有属性和方法实例
2017/02/21 Javascript
jQuery实现三级联动效果
2017/03/02 Javascript
vue轮播图插件vue-awesome-swiper的使用代码实例
2017/07/10 Javascript
JQuery EasyUI 结合ztrIee的后台页面开发实例
2017/09/01 jQuery
基于javascript 显式转换与隐式转换(详解)
2017/12/15 Javascript
Vue 实现创建全局组件,并且使用Vue.use() 载入方式
2020/08/11 Javascript
在nuxt中使用路由重定向的实例
2020/11/06 Javascript
解决vant的Toast组件时提示not defined的问题
2020/11/11 Javascript
vue3.0 项目搭建和使用流程
2021/03/04 Vue.js
[02:54]DOTA2亚洲邀请赛 VG战队出场宣传片
2015/02/07 DOTA
[45:18]完美世界DOTA2联赛循环赛 PXG vs IO 第二场 11.06
2020/11/09 DOTA
[01:19:46]DOTA2-DPC中国联赛 正赛 SAG vs DLG BO3 第一场 2月28日
2021/03/11 DOTA
解决pycharm每次新建项目都要重新安装一些第三方库的问题
2019/01/17 Python
Python GUI编程学习笔记之tkinter界面布局显示详解
2020/03/30 Python
python绕过图片滑动验证码实现爬取PTA所有题目功能 附源码
2021/01/06 Python
农民致富事迹材料
2014/01/23 职场文书
保密承诺书范文
2014/03/27 职场文书
员工安全生产承诺书
2014/05/22 职场文书
法语专业求职信
2014/07/20 职场文书
建国大业观后感800字
2015/06/01 职场文书
企业反腐倡廉心得体会
2015/08/15 职场文书
2016教师暑期培训学习心得体会
2016/01/09 职场文书
PostgreSQL数据库创建并使用视图以及子查询
2022/04/11 PostgreSQL
MySQL创建管理LIST分区
2022/04/13 MySQL