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实现同时兼容老版和新版Socket协议的一个简单WebSocket服务器
Jun 04 Python
操作Windows注册表的简单的Python程序制作教程
Apr 07 Python
python脚本监控docker容器
Apr 27 Python
python机器学习理论与实战(一)K近邻法
Jan 28 Python
Python中实现变量赋值传递时的引用和拷贝方法
Apr 29 Python
解决python matplotlib imshow无法显示的问题
May 24 Python
Python实现的tcp端口检测操作示例
Jul 24 Python
对matplotlib改变colorbar位置和方向的方法详解
Dec 13 Python
Python异常处理知识点总结
Feb 18 Python
python中selenium操作下拉滚动条的几种方法汇总
Jul 14 Python
python脚本执行CMD命令并返回结果的例子
Aug 14 Python
python 实现矩阵填充0的例子
Nov 29 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分页函数
2006/10/09 PHP
PHP 和 MySQL 基础教程(一)
2006/10/09 PHP
discuz免激活同步登入代码修改方法(discuz同步登录)
2013/12/24 PHP
学习php设计模式 php实现命令模式(command)
2015/12/08 PHP
Yii2如何批量添加数据
2016/05/17 PHP
ECSHOP完美解决Deprecated: preg_replace()报错的问题
2016/05/17 PHP
PHP Header用于页面跳转时的几个注意事项
2016/10/21 PHP
PHP判断当前使用的是什么浏览器(推荐)
2019/10/27 PHP
基于PHP实现堆排序原理及实例详解
2020/06/19 PHP
动手学习无线电
2021/03/10 无线电
新老版本juqery获取radio对象的方法
2010/03/01 Javascript
js字符编码函数区别分析
2011/12/28 Javascript
兼容IE和FF的图片上传前预览js代码
2013/05/28 Javascript
jquery特效 幻灯片效果示例代码
2013/07/16 Javascript
JavaScript的RequireJS库入门指南
2015/07/01 Javascript
用JavaScript来美化HTML的select标签的下拉列表效果
2015/11/17 Javascript
Highcharts入门之基本属性
2016/08/02 Javascript
JavaScript中的await/async的作用和用法
2016/10/31 Javascript
javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】
2016/12/15 Javascript
WEEX环境搭建与入门详解
2019/10/16 Javascript
VuePress 中如何增加用户登录功能
2019/11/29 Javascript
Python设计模式编程中解释器模式的简单程序示例分享
2016/03/02 Python
浅谈python jieba分词模块的基本用法
2017/11/09 Python
Java及python正则表达式详解
2017/12/27 Python
Python openpyxl读取单元格字体颜色过程解析
2019/09/03 Python
django2.2安装错误最全的解决方案(小结)
2019/09/24 Python
vim自动补全插件YouCompleteMe(YCM)安装过程解析
2019/10/21 Python
python同义词替换的实现(jieba分词)
2020/01/21 Python
python实现在线翻译功能
2020/03/03 Python
Richards网上商店:当代时尚,遍布巴西
2019/11/03 全球购物
个人思想理论学习的自我鉴定
2013/11/30 职场文书
市场部经理岗位职责
2014/04/10 职场文书
县政府办公室领导班子对照检查材料思想汇报
2014/09/28 职场文书
乡镇2014法制宣传日活动总结
2014/11/01 职场文书
2015秋季新学期开学寄语
2015/05/28 职场文书
2015中学教学工作总结
2015/07/22 职场文书