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显示天气预报
Mar 02 Python
Python实现测试磁盘性能的方法
Mar 12 Python
Python EOL while scanning string literal问题解决方法
Sep 18 Python
详细讲解Python中的文件I/O操作
May 24 Python
Python线程详解
Jun 24 Python
python爬取淘宝商品详情页数据
Feb 23 Python
caffe binaryproto 与 npy相互转换的实例讲解
Jul 09 Python
python中使用ctypes调用so传参设置遇到的问题及解决方法
Jun 19 Python
浅谈Python 敏感词过滤的实现
Aug 15 Python
tensorflow 模型权重导出实例
Jan 24 Python
Python经纬度坐标转换为距离及角度的实现
Nov 01 Python
Python预测分词的实现
Jun 18 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设计模式 Adapter(适配器模式)
2011/06/26 PHP
PHP输出数组中重名的元素的几种处理方法
2012/09/05 PHP
php自动加载机制的深入分析
2013/06/08 PHP
php实现smarty模板无限极分类的方法
2015/12/07 PHP
php版微信公众平台开发之验证步骤实例详解
2016/09/23 PHP
javascript 类方法定义还是有点区别
2009/04/15 Javascript
javascript通过className来获取元素的简单示例代码
2014/01/10 Javascript
jquery自动将form表单封装成json的具体实现
2014/03/17 Javascript
原生javascript实现的分页插件pagenav
2014/08/28 Javascript
简述Matlab中size()函数的用法
2016/03/20 Javascript
深入理解node exports和module.exports区别
2016/06/01 Javascript
利用JavaScript阻止表单提交的两种方法
2016/08/11 Javascript
require.js 加载 vue组件 r.js 合并压缩的实例
2016/10/14 Javascript
基于javascript的Form表单验证
2016/12/29 Javascript
详解Vue 事件修饰符capture 的使用
2017/12/29 Javascript
在vue中使用vue-echarts-v3的实例代码
2018/09/13 Javascript
jQuery的ztree仿windows文件新建和拖拽功能的实现代码
2018/12/05 jQuery
[01:06:42]VP vs NewBee Supermajor 胜者组 BO3 第二场 6.5
2018/06/06 DOTA
Windows系统下安装Python的SSH模块教程
2015/02/05 Python
分享Python开发中要注意的十个小贴士
2016/08/30 Python
python中os模块详解
2016/10/14 Python
Python之ReportLab绘制条形码和二维码的实例
2018/01/15 Python
python文本数据相似度的度量
2018/03/12 Python
Python实现时钟显示效果思路详解
2018/04/11 Python
Tensorflow 实现修改张量特定元素的值方法
2018/07/30 Python
Python读取Excel表格,并同时画折线图和柱状图的方法
2018/10/14 Python
浅谈django的render函数的参数问题
2018/10/16 Python
在Pycharm中将pyinstaller加入External Tools的方法
2019/01/16 Python
调用HTML5的Canvas API绘制图形的快速入门指南
2016/06/17 HTML / CSS
英国现代家具和装饰网站:PN Home
2018/08/16 全球购物
初婚初育证明
2014/01/14 职场文书
《他得的红圈圈最多》教学反思
2014/04/24 职场文书
英语教师自荐信
2014/05/26 职场文书
消防安全标语
2014/06/07 职场文书
个人租房协议书(范本)
2014/10/14 职场文书
Spring Cache和EhCache实现缓存管理方式
2021/06/15 Java/Android