用pil产生验证码出现:ImportError: The _imagingft C module is not installed

来源:互联网 发布:双色球软件2016破解版 编辑:程序博客网 时间:2024/05/29 13:31

今晚学习python PIL模块,练习生成验证码时,运行代码,报错ImportError: The _imagingft C module is not installed。代码如下(来自PIL - 廖雪峰的官方网站):

import Image, ImageDraw, ImageFont, ImageFilterimport random# 随机字母:def rndChar():    return chr(random.randint(65, 90))# 随机颜色1:def rndColor():    return (random.randint(64, 255), random.randint(64, 255), random.randint(64, 255))# 随机颜色2:def rndColor2():    return (random.randint(32, 127), random.randint(32, 127), random.randint(32, 127))# 240 x 60:width = 60 * 4height = 60image = Image.new('RGB', (width, height), (255, 255, 255))# 创建Font对象:font = ImageFont.truetype('Arial.ttf', 36)# 创建Draw对象:draw = ImageDraw.Draw(image)# 填充每个像素:for x in range(width):    for y in range(height):        draw.point((x, y), fill=rndColor())# 输出文字:for t in range(4):    draw.text((60 * t + 10, 10), rndChar(), font=font, fill=rndColor2())# 模糊:image = image.filter(ImageFilter.BLUR)image.save('code.jpg', 'jpeg');

按照国际惯例,我去google it,解决方案哗啦哗啦的,最开始参考了点这里,然后继续报错:error: command 'gcc' failed: No such file or directory,是因为系统没有gcc编译环境,按照网上的解决方案是下载一个VS2008,还有一种是安装MinGW,然后我选择了第二种方案。说说为什么没有采取第一种,VS2008有3G,下载得半天,安装又得半天,还不一定能成事,而MinGW只有84.5K,所以选择安装MinGW。

这里安装MinGW要注意了,点击下载文件打开,继续点安装之后,你以为gcc已经安装好了,其实没有!打开MinGW的bin目录,里面只有一个exe文件,点开这个exe文件,才能选择安装编译器(在这个exe提供的图形界面下,选择编译器类型,然后安装。真不知道这种方式是谁设计的,我只不过是想安装一个gcc编译器,居然都如此隐蔽)。为了保险起见和免得以后麻烦,把所有编译器类型都选上,然后安装吧。具体安装亲参考我的另一篇博文MinGW安装

这样一来还是会报错,这次的报错是:gcc failed with exit status 1 ,我到这一步简直要疯了,尼玛!苍天啊!我好不容易把MinGW安装了,这又是啥,简直是无底洞了。

没有办法,只好抛弃这种方法,尝试一下其他的。之前试过网上说的下载一个编译好的库(地址),然后安装,但是因为这样还是会报错:ImportError: The _imagingft C module is not installed。后来我把安装过的PIL库全部删除(PIL库在文件夹Lib->sitepackages里面,应该第三方库都会安装在这个文件夹下)。重新安装一下编译好的PIL库(查找pillow,这个是PIL库,不是"pillow"枕头的意思,选择一个合适的版本安装),然后就可以运行了(原因可能是我之前用easy_install的方式安装过PIL,所以要先清理一下,否则在import的时候,解释器可能不知道把哪个import进来吧)。中间也有一个KeyError:‘JPEG’的报错,这个很简单,把import Image改为from PIL import Image就可以了。


至此问题解决,从中得到一个教训:在windows下玩python,用到第三方库的时候,最好是安装编译好的库。因为windows的系统,永远让你有“呵呵”的感觉,可能linux下的python问题会少一些吧。


自从接触python一来,我遇到最多的问题就是编译环境!在这个问题中,我曾经试过cloud9去调试python代码,cloud9是云开发环境,只要你在网页提供的编辑框输入代码,不需要配置环境,就可以编译代码。但是报错:IOError: cannot open resource。原因是没有找到Arial.tff,然后cloud9也不支持把Arial.tff复制到工作区目录下,真是太囧了:

font = ImageFont.truetype('Arial.ttf', 36)

尽管python编译环境问题多多,但是还是很喜欢python语言。首先我自己是个不合格的程序猿,无法适应C/C++这种静态语言,其实现在来看C/C++,会觉得它们不够高级。在python之前,写过一段时间的matlab程序,接触python之后,发现这两种脚本语言都有共同的地方:第三方库够强大,语言很智能。于是接触起python就比较快,还有一个原因,因为python是脚本语言,所以比较容易上手,在用python的时候,可以引用很多库,而不必了解其中的实现细节:比如用python发电子邮件,import几个文件加几行代码就可以了,其余的工作都由库来帮你完成,特别好用!
0 0
原创粉丝点击