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实现将n个点均匀地分布在球面上的方法
Mar 12 Python
在Python的Flask框架中验证注册用户的Email的方法
Sep 02 Python
python复制列表时[:]和[::]之间有什么区别
Oct 16 Python
使用python Telnet远程登录执行程序的方法
Jan 26 Python
python 实现交换两个列表元素的位置示例
Jun 26 Python
基于python分析你的上网行为 看看你平时上网都在干嘛
Aug 13 Python
Pycharm激活码激活两种快速方式(附最新激活码和插件)
Mar 12 Python
在Python中使用K-Means聚类和PCA主成分分析进行图像压缩
Apr 10 Python
python异常处理之try finally不报错的原因
May 18 Python
Python字符串查找基本操作代码案例
Oct 27 Python
Pyqt5将多个类组合在一个界面显示的完整示例
Sep 04 Python
python 实现图片特效处理
Apr 03 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结合Mysql数据库实现留言板功能
2016/03/04 PHP
javascript 正则替换 replace(regExp, function)用法
2010/05/22 Javascript
解决jQuery插件tipswindown与hintbox冲突
2010/11/05 Javascript
jquery下异步提交表单 异步跨域提交表单
2010/11/17 Javascript
JavaScript面向对象设计二 构造函数模式
2011/12/20 Javascript
浅析IE10兼容性问题(frameset的cols属性)
2014/01/03 Javascript
jquery为页面增加快捷键示例
2014/01/31 Javascript
javascript生成随机数方法汇总
2015/11/12 Javascript
JS在onclientclick里如何控制onclick的执行
2016/05/30 Javascript
js实现的xml对象转json功能示例
2016/12/24 Javascript
浅谈Node Inspector 代理实现
2017/10/19 Javascript
基于vue监听滚动事件实现锚点链接平滑滚动的方法
2018/01/17 Javascript
微信小程序实现MUI数字输入框效果
2018/01/31 Javascript
使用vuex的state状态对象的5种方式
2018/04/19 Javascript
axios对请求各种异常情况处理的封装方法
2018/09/25 Javascript
vue实现商城秒杀倒计时功能
2019/12/12 Javascript
Vue的Options用法说明
2020/08/14 Javascript
[06:13]DOTA2进化论(修改版)
2013/10/08 DOTA
Python常用时间操作总结【取得当前时间、时间函数、应用等】
2017/05/11 Python
对numpy中布尔型数组的处理方法详解
2018/04/17 Python
python中sys.argv函数精简概括
2018/07/08 Python
python使用mitmproxy抓取浏览器请求的方法
2019/07/02 Python
django mysql数据库及图片上传接口详解
2019/07/18 Python
pycharm 安装JPype的教程
2019/08/08 Python
python中必要的名词解释
2019/11/20 Python
pycharm设置当前工作目录的操作(working directory)
2020/02/14 Python
HTML5 3D书本翻页动画的实现示例
2019/08/28 HTML / CSS
纽约21世纪百货官网:Century 21
2016/08/27 全球购物
Blue Nile中国官网:全球知名的钻石和珠宝网络零售商
2020/03/22 全球购物
英语文学专业学生的自我评价
2013/10/31 职场文书
毕业生实习鉴定
2013/12/11 职场文书
三八妇女节活动主持词
2014/03/17 职场文书
承诺书怎么写
2014/03/26 职场文书
缓刑期间思想汇报范文
2014/10/10 职场文书
师德标兵事迹材料
2014/12/19 职场文书
授权协议书范本(3篇)
2019/10/15 职场文书