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 selenium 三种等待方式详解(必会)
Sep 15 Python
深入理解Python分布式爬虫原理
Nov 23 Python
python 寻找优化使成本函数最小的最优解的方法
Dec 28 Python
Python设计模式之命令模式简单示例
Jan 10 Python
python与sqlite3实现解密chrome cookie实例代码
Jan 20 Python
python reverse反转部分数组的实例
Dec 13 Python
Django用户认证系统 Web请求中的认证解析
Aug 02 Python
Python字符串中添加、插入特定字符的方法
Sep 10 Python
python 实现图片上传接口开发 并生成可以访问的图片url
Dec 18 Python
python实现实时视频流播放代码实例
Jan 11 Python
Python求区间正整数内所有素数之和的方法实例
Oct 13 Python
Python还能这么玩之用Python做个小游戏的外挂
Jun 04 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
在Yii框架中使用PHP模板引擎Twig的例子
2014/06/13 PHP
php查询操作实现投票功能
2016/05/09 PHP
网页javascript精华代码集
2007/01/24 Javascript
Dreamweaver jQuery智能提示插件,支持版本提示,支持1.6api
2011/07/31 Javascript
jQuery实现等比例缩放大图片让大图片自适应页面布局
2013/10/16 Javascript
jquery 显示*天*时*分*秒实现时间计时器
2014/05/07 Javascript
js数组中如何随机取出一个值
2014/06/13 Javascript
JS调用某段SQL语句的方法
2016/10/20 Javascript
sea.js常用的api简易文档
2016/11/15 Javascript
深入浅析ES6 Class 中的 super 关键字
2017/10/20 Javascript
ES6学习笔记之map、set与数组、对象的对比
2018/03/01 Javascript
使用vue中的v-for遍历二维数组的方法
2018/03/07 Javascript
详解vue移动端项目的适配(以mint-ui为例)
2018/08/17 Javascript
JS获取并处理php数组的方法实例分析
2018/09/04 Javascript
JavaScript碎片—函数闭包(模拟面向对象)
2019/03/13 Javascript
[02:28]DOTA2英雄基础教程 狼人
2013/12/23 DOTA
Django 使用Ajax进行前后台交互的示例讲解
2018/05/28 Python
PyCharm安装Markdown插件的两种方法
2019/06/24 Python
python GUI库图形界面开发之PyQt5访问系统剪切板QClipboard类详细使用方法与实例
2020/02/27 Python
解决tensorflow读取本地MNITS_data失败的原因
2020/06/22 Python
python使用Word2Vec进行情感分析解析
2020/07/31 Python
Skyscanner英国:苏格兰的全球三大领先航班搜索服务之一
2017/11/09 全球购物
经典c++面试题三
2015/07/08 面试题
Shell编程面试题
2016/05/29 面试题
机电工程专业应届生求职信
2013/10/03 职场文书
俄语翻译实习生的自我评价分享
2013/11/06 职场文书
运动会跳远广播稿
2014/02/04 职场文书
《胖乎乎的小手》教学反思
2014/02/26 职场文书
文员岗位职责范本
2014/03/08 职场文书
关于学习的决心书
2015/02/05 职场文书
年底个人总结范文
2015/03/10 职场文书
昆虫记读书笔记
2015/06/26 职场文书
聘任合同书
2015/09/21 职场文书
学习社交礼仪心得体会
2016/01/22 职场文书
2017元旦、春节期间廉洁自律承诺书
2016/03/25 职场文书
Linux中sftp常用命令整理
2022/06/28 Servers