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 isinstance函数介绍
Apr 14 Python
全面了解Python环境配置及项目建立
Jun 30 Python
Python中遇到的小问题及解决方法汇总
Jan 11 Python
mac 安装python网络请求包requests方法
Jun 13 Python
python3解析库pyquery的深入讲解
Jun 26 Python
python找出一个列表中相同元素的多个索引实例
Jun 11 Python
python实现连连看辅助之图像识别延伸
Jul 17 Python
Python如何爬取b站热门视频并导入Excel
Aug 10 Python
python PIL模块的基本使用
Sep 29 Python
python调用有道智云API实现文件批量翻译
Oct 10 Python
python爬虫多次请求超时的几种重试方法(6种)
Dec 01 Python
详解Python中openpyxl模块基本用法
Feb 23 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 str_pad 函数用法简介
2009/07/11 PHP
php header功能的使用
2013/10/28 PHP
PHP简单处理表单输入的特殊字符的方法
2016/02/03 PHP
PHP用户管理中常用接口调用实例及解析(含源码)
2017/03/09 PHP
PHP命名空间用法实例分析
2019/09/04 PHP
再谈IE中Flash控件的自动激活 ObjectWrap
2007/03/09 Javascript
关于UTF-8的客户端用AJAX方式获取GB2312的服务器端乱码问题的解决办法
2010/11/30 Javascript
IE事件对象(The Internet Explorer Event Object)
2012/06/27 Javascript
javascript实现uploadify上传格式以及个数限制
2015/11/23 Javascript
JavaScript实现点击按钮直接打印
2016/01/06 Javascript
基于javascript实现页面加载loading效果
2020/09/15 Javascript
JavaScript代码实现图片循环滚动效果
2020/03/19 Javascript
javascript实现滚动效果的数字时钟实例
2016/07/21 Javascript
详解nodejs 文本操作模块-fs模块(一)
2016/12/22 NodeJs
微信小程序自定义组件
2017/08/16 Javascript
解决vue接口数据赋值给data没有反应的问题
2018/08/27 Javascript
基于游标的分页接口实现代码示例
2018/11/12 Javascript
Node.js使用supervisor进行开发中调试的方法
2019/03/26 Javascript
vue移动端屏幕适配详解
2019/04/30 Javascript
原生javascript中this几种常见用法总结
2020/02/24 Javascript
微信小程序连接服务器展示MQTT数据信息的实现
2020/07/14 Javascript
[10:54]Team Spirit vs Navi
2018/06/07 DOTA
python开发之文件操作用法实例
2015/11/13 Python
Python 爬取携程所有机票的实例代码
2018/06/11 Python
python实现贪吃蛇游戏源码
2020/03/21 Python
pyqt5数据库使用详细教程(打包解决方案)
2020/03/25 Python
基于Python实现体育彩票选号器功能代码实例
2020/09/16 Python
HTML5 HTMLCollection和NodeList的区别详解
2020/04/29 HTML / CSS
军用级手机壳,专为冒险而建:Zizo Wireless
2019/08/07 全球购物
如何利用cmp命令比较文件
2016/04/11 面试题
团队经理竞聘书
2014/03/31 职场文书
《第一次抱母亲》教学反思
2014/04/16 职场文书
警察群众路线整改措施
2014/09/26 职场文书
工厂员工辞职信范文
2015/05/12 职场文书
Python多线程 Queue 模块常见用法
2021/07/04 Python
PostgreSQL解析URL的方法
2021/08/02 PostgreSQL