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监控文件或目录变化
Jun 07 Python
Python如何获取系统iops示例代码
Sep 06 Python
Python读取sqlite数据库文件的方法分析
Aug 07 Python
python pcm音频添加头转成Wav格式文件的方法
Jan 09 Python
python导入模块交叉引用的方法
Jan 19 Python
python调用并链接MATLAB脚本详解
Jul 05 Python
python绘制直方图和密度图的实例
Jul 08 Python
Python OpenCV中的numpy与图像类型转换操作
Dec 11 Python
教你使用Pandas直接核算Excel中快递费用
May 12 Python
python调用ffmpeg命令行工具便捷操作视频示例实现过程
Nov 01 Python
python脚本框架webpy的url映射详解
Nov 20 Python
Python线程池与GIL全局锁实现抽奖小案例
Apr 13 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实现和c#一致的DES加密解密实例
2017/07/24 PHP
niceTitle 基于jquery的超链接提示插件
2010/05/31 Javascript
JS字符串函数扩展代码
2011/09/13 Javascript
jQuery如何取id有.的值一般的方法是取不到的
2014/04/18 Javascript
Angular中的Promise对象($q介绍)
2015/03/03 Javascript
解决vue axios的封装 请求状态的错误提示问题
2018/09/25 Javascript
vue 使用 canvas 实现手写电子签名
2020/03/06 Javascript
2020淘宝618理想生活列车自动领喵币js脚本的代码
2020/06/02 Javascript
JS常见错误(Error)及处理方案详解
2020/07/02 Javascript
Python中subprocess模块用法实例详解
2015/05/20 Python
python学习笔记之调用eval函数出现invalid syntax错误问题
2015/10/18 Python
Python爬取网易云音乐热门评论
2017/03/31 Python
Python 读写文件的操作代码
2018/09/20 Python
python爬虫之urllib库常用方法用法总结大全
2018/11/14 Python
Django中使用Whoosh进行全文检索的方法
2019/03/31 Python
python实现两个dict合并与计算操作示例
2019/07/01 Python
Python获取命令实时输出-原样彩色输出并返回输出结果的示例
2019/07/11 Python
基于python二叉树的构造和打印例子
2019/08/09 Python
Python 字符串、列表、元组的截取与切片操作示例
2019/09/17 Python
使用Python函数进行模块化的实现
2019/11/15 Python
Python爬虫实现自动登录、签到功能的代码
2020/08/20 Python
python 解决函数返回return的问题
2020/12/05 Python
html5 桌面提醒:Notifycations应用介绍
2012/11/27 HTML / CSS
孕妇装中的著名品牌:Isabella Oliver(伊莎贝拉·奥利弗)
2016/10/31 全球购物
Origins悦木之源英国官网:雅诗兰黛集团高端植物护肤品牌
2017/11/06 全球购物
香蕉共和国加拿大官网:Banana Republic加拿大
2018/08/06 全球购物
教师自荐信
2013/12/10 职场文书
销售心得体会
2014/01/02 职场文书
运动会广播稿200字
2014/01/15 职场文书
安全事故检讨书
2014/01/18 职场文书
宣传策划类求职信范文
2014/01/31 职场文书
求职信需要的五点内容
2014/02/01 职场文书
2014年中班元旦活动方案
2014/02/14 职场文书
2014年法院个人工作总结
2014/12/17 职场文书
2015年母亲节活动总结
2015/02/10 职场文书
个人职业生涯规划之自我评估篇
2019/09/03 职场文书