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实现class对象转换成json/字典的方法
Mar 11 Python
用Python写王者荣耀刷金币脚本
Dec 21 Python
python爬虫爬取网页表格数据
Mar 07 Python
python2和python3的输入和输出区别介绍
Nov 20 Python
Python使用正则实现计算字符串算式
Dec 29 Python
TensorFlow tensor的拼接实例
Jan 19 Python
关于TensorFlow新旧版本函数接口变化详解
Feb 10 Python
python代码如何注释
Jun 01 Python
python报错: 'list' object has no attribute 'shape'的解决
Jul 15 Python
安装pytorch时报sslerror错误的解决方案
May 17 Python
Django rest framework如何自定义用户表
Jun 09 Python
Python3的进程和线程你了解吗
Mar 16 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
粗略计算在线时间,bug:ip相同
2006/12/09 PHP
PHP register_shutdown_function函数的深入解析
2013/06/03 PHP
php使用socket post数据到其它web服务器的方法
2015/06/02 PHP
PHP实现将几张照片拼接到一起的合成图片功能【便于整体打印输出】
2017/11/14 PHP
PHP学习记录之数组函数
2018/06/01 PHP
CI框架附属类用法分析
2018/12/26 PHP
php用户名的密码加密更安全的方法
2019/06/21 PHP
namespace.js Javascript的命名空间库
2011/10/11 Javascript
javascript中[]和{}对象使用介绍
2013/03/20 Javascript
Bootstrap框架动态生成Web页面文章内目录的方法
2016/05/12 Javascript
JS中作用域和变量提升(hoisting)的深入理解
2016/10/31 Javascript
基于jQuery插件jqzoom实现的图片放大镜效果示例
2017/01/23 Javascript
如何使用angularJs
2017/05/08 Javascript
JavaScrip数组删除特定元素的几种方法总结
2017/09/06 Javascript
vue中实现在外部调用methods的方法(推荐)
2018/02/08 Javascript
修改npm全局安装模式的路径方法
2018/05/15 Javascript
如何使用electron-builder及electron-updater给项目配置自动更新
2018/12/24 Javascript
vue中typescript装饰器的使用方法超实用教程
2019/06/17 Javascript
微信小程序实现禁止分享代码实例
2019/10/19 Javascript
JS实现表单中点击小眼睛显示隐藏密码框中的密码
2020/04/13 Javascript
举例讲解Python设计模式编程中对抽象工厂模式的运用
2016/03/02 Python
使用Nginx+uWsgi实现Python的Django框架站点动静分离
2016/03/21 Python
python操作 hbase 数据的方法
2016/12/18 Python
Python 遍历列表里面序号和值的方法(三种)
2017/02/17 Python
Python拼接字符串的7种方法总结
2018/11/01 Python
python 读取文件并把矩阵转成numpy的两种方法
2019/02/12 Python
Java多线程实现四种方式原理详解
2020/06/02 Python
如何使用python记录室友的抖音在线时间
2020/06/29 Python
高档奢华时装在线目的地:FORWARD by elyse walker
2017/10/16 全球购物
印尼太阳百货公司网站:Matahari
2018/02/04 全球购物
德国汽车零件和汽车配件网上商店:kfzteile24
2018/11/14 全球购物
PHP如何设置和取得Cookie值
2015/06/30 面试题
励志演讲稿大全
2014/08/21 职场文书
社区元宵节活动总结
2015/02/06 职场文书
青年联谊会致辞
2015/07/31 职场文书
村党总支部公开承诺书2016
2016/03/25 职场文书