在服务器上调用import ImageFont时报如下错误

ImportError: The _imagingft C module is not installed

(服务器为Centos5.5, python版本2.7.3)

第一反应是pil安装的有问题,通过yum install freetype-devel libjpeg-devel libpng-devel

把依赖的相关库重新安装一遍,然后通过pip uninstall -y pil卸载pil,然后到http://effbot.org/downloads/Imaging-1.1.7.tar.gz下载源码包,修改set.py中JPEG_ROOT, ZLIB_ROOT,FREETYPE_ROOT等路径,然后执行

python setup.py build_ext -i

python setup.py build

python setup.py install

重新安装完问题依旧。

后来偶然发现官网的一篇文章:http://effbot.org/zone/pil-imaging-not-installed.htm,有所启发,首先判断_imaging是否正常安装,如果安装过程没有报错,在PIL的包下应该能找到,我的在/usr/local/python-2.7.3/lib/python2.7/site-packages/PIL/_imaging.so(文件名后缀因操作系统而异,比如_imaging.pyd或者_imaging.dll),下一步判断python是否能找到_imaging.so,这个通过python -v ,然后执行import Image显示的调试信息中找到_imaging.so是否被导入,如果到这一步都是ok的,那就说明是_imaing.so本身的问题了,果然在python中执行:import _imaing,提示

»> import _imaging

Traceback (most recent call last):

File “<stdin>”, line 1, in <module>

ImportError: libjpeg.so.7: cannot open shared object file: No such file or directory

说明系统在指定的目录找不到libjpeg.so.7这个库,而libjpeg是正常安装的,通过whereis libjpeg.so.7可以找到实际安装路径(/usr/local/lib/libjpeg.so.7),这时只需要在系统的搜索路径下建个软链接到实际安装路径即可(ln -s /usr/local/lib/libjpeg.so.7 /usr/lib/)

whereis libjpeg.so.7的更多相关文章

  1. nginx+mysql+php

    根据生产环境安装操作系统(centos 6.0 64位系统),安装完成后,使用Xshell通过ssh协议连接服务器.ssh 用户名@IP+回车+输入密码后登录系统.#mkdir -p /home/to ...

  2. CentOS下安装libjpeg库及编译GD库

    GD库明明安装了,可处理图片的时候还是报错 Fatal error: Call to undefined function imagecreatefromjpeg() .PHP安装后,默认的gd库不支 ...

  3. Linux下查找文件:which、whereis、locate、find 命令的区别

    我们经常在linux要查找某个文件,但不知道放在哪里了,可以使用下面的一些命令来搜索.which       查看可执行文件的位置,通过环境变量查whereis    查看文件的位置,通过数据库查,每 ...

  4. linux常用命令-文件搜索命令-locate,which,whereis,grep

    locate 目录或文件名 -i 查找的时候不区分大小写 这个类似everything,速度比find快很多,因为这个命令搜索的是它维护的文件资料库,文件资料库是var/lib/mlocate/mlo ...

  5. Linux常用命令学习2---(文件搜索命令locate find、命令搜索命令whereis which、字符串搜索命令grep、帮助命令man)

     1.文件搜索命令:locate [文件名]    在后台数据库中按文件名搜索,搜索速度比find快,耗费资源更少    例子:locate test.txt,就会显示文件名包含 test.txt的所 ...

  6. 摘要: Linux下which、whereis、locate、find命令的区别

    我们经常在linux要查找某个文件,但不知道放在哪里了,可以使用下面的一些命令来搜索.这些是从网上找到的资料,因为有时很长时间不会用到,当要用的时候经常弄混了,所以放到这里方便使用. which    ...

  7. whereis 和which

    这两个命令用的好,可以很快找出文件的路径 [root@oc3408554812 zip-3.0]# which passwd/usr/bin/passwd[root@oc3408554812 zip- ...

  8. Linux下的五个查找命令:grep、find、locate、whereis、which

    原文转自 http://www.cnblogs.com/wanqieddy/archive/2011/07/15/2107071.html 1.grep grep(General Regular Ex ...

  9. 每天一个 Linux 命令(17):whereis 命令

    whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b).man说明文件(参数-m)和源代码文件(参数-s).如果省略参数,则返回所有信息. 和find相比,whereis查找的速度非 ...

随机推荐

  1. golang动态调用方法

    package main import ( "fmt" "reflect" ) type YourT1 struct { } func (y *YourT1) ...

  2. Python if-elif-else

    alien_color = ['green','yellow','red']for color in alien_color: if color == 'green': print 'alien_co ...

  3. Vue.js:起步

    ylbtech-Vue.js:起步 1.返回顶部 1. Vue.js 起步 每个 Vue 应用都需要通过实例化 Vue 来实现. 语法格式如下: var vm = new Vue({ // 选项 }) ...

  4. Kata 架构

    原文:https://github.com/kata-containers/documentation/blob/master/architecture.md (欢迎纠错) Kata-runtime ...

  5. 源码安装ceph后使用测试集群的方法

    标签(空格分隔): ceph,ceph实验,ceph源码 通过博客 源码编译安装ceph(aarch64架构) 成功安装ceph之后,之后可以运行一个测试集群进行实验 1,进入安装构建目录: [roo ...

  6. openstack及组件简要介绍

    为什要用云? 一.简单的说就是对资源更加合理的分配,使用,比如硬件的数量,带宽等等这些,因为你不能机器买来不需要了再卖掉(当然也可以),带宽跟机房签合同得来一年的,中间不够了也不能加,超了也不退钱 二 ...

  7. thinkPHP增删改查的方法案例

    thinkphp对数据库增删改查进行了封装操作,使得使用更加方便,但是不一定灵活. 可以用封装的用,需要写sql,可以执行sql. 1.原始的 $Model = new Model(); // 实例化 ...

  8. js作用域和作用域链

    作用域 首先要知道一点,js跟python都是一样的,先编译后执行 唯一的区别在于,js对于只声明,未定义的变量,报错是未定义,后面代码会有这个例子 编译的过程只有赋值和开辟空间的过程 只有函数,类才 ...

  9. C# 通用类型转换方法

    在程序开发过程中经常需要进行数据的类型转换,而且如果一个字段的类型改成另一个类型时,所有相关的类型转换的地方都要跟着修改,不但造成了很多重复转换的代码而且修改字段类型时额外修改相关转换代码的工作量也很 ...

  10. 密码生成工具Cupp

    Cupp可根据已知信息生成相应的字典,用来爆破很有帮助 首先先安装一下cupp 命令:apt-get install cupp 参数说明: -v查看cupp版本号 -h 查看参数列表 -l 从gith ...