[Python]Windows下安装PIL遇到的问题

以下来说说安装PIL的艰难过程,中途遇到一些问题,虽然网上很多类似的问题解答,可都是一样的只告诉很简单的“如何处理”一下就可以了,但是我就是完成不了这一步!

先介绍一下最终完成时我的环境,windows 7 64位系统、python 2.7.9 32位和Pillow-2.7.0.win32-py2.7。

首先,菜鸟学习PIL,直接按照廖雪峰老师的python教程上写的方法安装PIL(“ Windows平台就去 PIL官方网站 下载exe安装包”

然后,按照他的模板写了个非常简单的生成验证码图片的小程序,一系列问题接踵而至。

1. 出现ImportError错误“ The _imagingft C module is not installed
具体出错的那行代码是font = ImageFont.truetype('Arial.ttf', 36),把这行注释之后,可以正确运行,只是图片上的验证码字母是默认字体和大小,根本看不见。

大家的建议都是 PIL官方编译包有bug,最好下载 第三方组织编译包,强烈推荐pillow ,然后我在一个著名的非官方网站( http://www.lfd.uci.edu/~gohlke/pythonlibs/ )上下载了pillow。
该网站提供的windows可用的下载只有一项:
Pillow-2.7.0-cp26-none-win32.whl
Pillow-2.7.0-cp26-none-win_amd64.whl
Pillow-2.7.0-cp27-none-win32.whl
Pillow-2.7.0-cp27-none-win_amd64.whl
Pillow-2.7.0-cp32-none-win32.whl
Pillow-2.7.0-cp32-none-win_amd64.whl
Pillow-2.7.0-cp33-none-win32.whl
Pillow-2.7.0-cp33-none-win_amd64.whl
Pillow-2.7.0-cp34-none-win32.whl
Pillow-2.7.0-cp34-none-win_amd64.whl
Pillow-2.7.0.win32-pypy2.4-py2.7.zip

2. 下载的压缩包中有两个文件夹bin和site-packages,问题又来了,对于一个小白来说,这该如何安装是好呢?
site-packages文件夹下面还有PIL和Pillow-2.7.0-py2.7.egg-info,这应该是采用exe安装后出现在Python27/Lib/site-packages文件夹下的第三方库文件。
反正python是绿色的,于是乎,直接把这两个文件夹拷贝到该目录下。

没有之前的那个错误了,可还是有错“ImportError: cannot import name _imaging”。

于是,我猜测,是不是跟 bin目录下的东西有关呢?该目录下的五个.py文件(pilconvert.py, pildriver.py, pilfile.py, pilfont.py, pilprint.py )需要放在哪里呢?

3. 然后查看pillow的文档中关于它的安装问题,文档给出的windows的两种安装方式如下:

Windows installation
We provide binaries for Windows in the form of Python Eggs and Python Wheels:

Python Eggs
pip does not support Python Eggs; use easy_install instead.
$ easy_install Pillow

Python Wheels
Experimental. Requires setuptools >=0.8 and pip >=1.4.1
$ pip install --use-wheel Pillow


If the above does not work, it’s likely because we haven’t uploaded a wheel for the latest version of Pillow. In that case, try pinning it to a specific version:
$ pip install --use-wheel Pillow==2.6.1

我采用easy_install的方式安装,结果却安装到了theano(当初捣腾deep learning时安装的,没跑通还把python和注册表改得稀烂)目录下了,原来我的电脑里装分别装了32和64位的python2.7.4版本,并且环境变量里的python目录修改到theano下了。
一时太混乱,所以我选择直接把所有的python及第三方库全部卸载,然后重新安装完python后,还需要安装easy_install,不然的话执行上面的命令提示不是内部命令。

4. 最后,我懒得安装easy_install,终于找到了pillow的exe版本 ( https://pypi.python.org/pypi/Pillow/2.7.0),直接双击安装非常方便!
安装它之后一定要注意的是import Image一定要换成from PIL import Image 
还有一项需要注意的是,如果你先安装了官方的PIL的话,需要先卸载PIL再安装pillow,并且要保证卸载的时候把site-packages中的PIL文件删掉了,不然的话安装pillow里的PIL会与之前已经存在的PIL合并,导致一些意想不到的错误。

总结一下需要注意的问题:
(1)确定python的版本和自己要安装的第三方库的版本及其支持的python版本是否一致,这里的一致除了版本号一致外,还要看是32位还是64位,有时候32位的第三方库也不能安装到64位的python上。
(2)官方的PIL有一些bug,可以采用pillow替换。若先安装了官方的PIL,安装pillow前需要先卸载PIL。
(3)安装pillow,采用easy_install或者pip安装的时候一定要注意安装的目录是不是我们正在用的这个python。(一般人应该不会像我这么傻地装这么多版本的python吧,反正我的电脑里三个windows,每个系统下都有python,有个系统里还有好几个python)
(4)安装pillow,强烈建议到 https://pypi.python.org/pypi/Pillow/2.7.0 下载合适的pillow版本的exe进行安装。
(5)写python脚本应用Image的时候, import Image一定要换成 from PIL import Image

好不容易安装好环境,跟着廖老师学python,第一个小小的验证码生成程序:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from PIL import Image, ImageDraw, ImageFont, ImageFilter
import random

# random character
def rndChar():
    return chr(random.randint(65, 90))

# random color 1
def rndColor():
    return (random.randint(64, 255), random.randint(64, 255), random.randint(64, 255))

# random color 2
def rndColor2():
    return (random.randint(32, 127), random.randint(32, 127), random.randint(32, 127))

# 240 * 60
width = 60 * 4
height = 60
image = Image.new('RGB', (width, height), (255, 255, 255))

# create Font object
font = ImageFont.truetype('Arial.ttf', 36)

# create Draw object
draw = ImageDraw.Draw(image)

# fill in every pixel
for x in range(width):
    for y in range(height):
        draw.point((x, y), fill = rndColor())

# output the text
for t in range(4):
    draw.text((60 * t + 10, 10), rndChar(), font = font, fill = rndColor2())

# fuzzy
image = image.filter(ImageFilter.BLUR)
image.save('code.jpg','jpeg')


参考:
http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/00140767171357714f87a053a824ffd811d98a83b58ec13000
http://www.lfd.uci.edu/~gohlke/pythonlibs/
https://pypi.python.org/pypi/Pillow/2.7.0
http://pillow.readthedocs.org/en/latest/installation.html

你可能感兴趣的:([Python]Windows下安装PIL遇到的问题)