whereis libjpeg.so.7
在服务器上调用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/)