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 相关文章推荐
linux系统使用python获取cpu信息脚本分享
Jan 15 Python
wxPython框架类和面板类的使用实例
Sep 28 Python
Python获取Windows或Linux主机名称通用函数分享
Nov 22 Python
Python实现抓取百度搜索结果页的网站标题信息
Jan 22 Python
python对json的相关操作实例详解
Jan 04 Python
python万年历实现代码 含运行结果
May 20 Python
学习Python selenium自动化网页抓取器
Jan 20 Python
基于DATAFRAME中元素的读取与修改方法
Jun 08 Python
Opencv+Python 色彩通道拆分及合并的示例
Dec 08 Python
Python3 虚拟开发环境搭建过程(图文详解)
Jan 06 Python
Python3安装模块报错Microsoft Visual C++ 14.0 is required的解决方法
Jul 28 Python
Python txt文件常用读写操作代码实例
Aug 03 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
DC宇宙的第一个英雄,堪称动漫史鼻祖,如今成为美国文化的象征
2020/04/09 欧美动漫
基于文本的搜索
2006/10/09 PHP
PHP+MYSQL 出现乱码的解决方法
2008/08/08 PHP
利用php递归实现无限分类 格式化数组的详解
2013/06/08 PHP
修改WordPress中文章编辑器的样式的方法详解
2015/12/15 PHP
Javascript常考语句107条收集
2010/03/09 Javascript
javascript中String对象的slice()方法分析
2014/12/20 Javascript
js实现简单选项卡与自动切换效果的方法
2015/04/10 Javascript
jQuery寻找n以内完全数的方法
2015/06/24 Javascript
jQGrid Table操作列中点击【操作】按钮弹出按钮层的实现代码
2016/12/05 Javascript
浅谈vue.js中v-for循环渲染
2017/07/26 Javascript
关于Vue Webpack2单元测试示例详解
2017/08/14 Javascript
JS判断数组那点事
2017/10/10 Javascript
使用JQuery实现图片轮播效果的实例(推荐)
2017/10/24 jQuery
vue2中的keep-alive使用总结及注意事项
2017/12/21 Javascript
Vue中"This dependency was not found"问题的解决方法
2018/06/19 Javascript
angularjs $http调用接口的方式详解
2018/08/13 Javascript
基于Web Audio API实现音频可视化效果
2020/06/12 Javascript
Javascript实现鼠标移入方向感知
2020/06/24 Javascript
解决vue加scoped后就无法修改vant的UI组件的样式问题
2020/09/07 Javascript
python调用Moxa PCOMM Lite通过串口Ymodem协议实现发送文件
2014/08/15 Python
使用PDB简单调试Python程序简明指南
2015/04/25 Python
在windows系统中实现python3安装lxml
2016/03/23 Python
Python实现使用卷积提取图片轮廓功能示例
2018/05/12 Python
对numpy数据写入文件的方法讲解
2018/07/09 Python
Django 配置多站点多域名的实现步骤
2019/05/17 Python
基于打开pycharm有带图片md文件卡死问题的解决
2020/04/24 Python
python如何安装下载后的模块
2020/07/03 Python
PyCharm 2020.2 安装详细教程
2020/09/25 Python
车辆安全检查制度
2014/01/12 职场文书
会展策划与管理专业大学生职业生涯规划
2014/02/07 职场文书
勤奋学习演讲稿
2014/05/10 职场文书
违章停车检讨书
2014/10/21 职场文书
2014年英语教研组工作总结
2014/12/06 职场文书
爱国主义教育基地观后感
2015/06/18 职场文书
Win11 22H2 2022怎么更新? 获得Win1122H22022版本升级技巧
2022/09/23 数码科技