Young87

当前位置:首页 >个人收藏

The _imaging C module is not installed

http://effbot.org/zone/pil-imaging-not-installed.htm

为什么PIL 显式信息“The _imaging C module is not installed”

PIL 库主要包括两个部分,一系列的Python 模块,经常存储在一个PIL 子目录下,以及一个称为_imaging 的二进制扩展模块。根据平台和版本的不同,_imaging 存储在名为:_imaging.pyd,_imaging.dll 或 _imaging.so (或一些变动)的文件下。

如果Python 导入_imaging module失败,PIL 的一些部分仍然工作。你可以导入大部分的模块,打开和标志大部分的图像文件,但是,当你调用扩展某块提供的功能时,PIL 提交一个ImportError 错误。

 

检查办法:

1. 你是否有_imaging 模块?

在自己的\Lib\site-packages 文件夹下,或者全盘搜索上面提到的三个文件:_imaging.pyd 或 _imaging.dll ,Unix:_imaging.so 或 _imagingmodule.so 。一些Unix 平台可能有其它的一些扩展名(比如:.sl)。

 

2. Python 是否可以找到_imaging module?

对于所有其它的Python 模块,Python 在它的Python 模块儿路径下查找_imaging 模块,如果路径中无法找到该模块,Python 则不会加载它。

此时我们应该首先检查python 的路径是哪些。一种方法:

以python -v 启动 python:

之后输入命令 import 模块名

此时将显式你导入的模块所在的详细位置

另一个方法是,检查sys.path 变量,它是list,确保它的值是正确的:

import sys

print sys.path

如果想修改sys.path 的值,直接当作普通的list 进行修改即可。

3. Python 是否可以加载_imaging 模块?

如果上面的检查都通过了,可能是Python 找到的模块与当前的python 模块不兼容。比如,为Python的给定次要版本(例如2.1)构建的扩展仅适用于该版本或其修订版本( 例如2.1.2,但不是2.2)。

为了检查这个问题,直接打开IDLE输入如下命令:

import _imaging

如果module 不兼容,更早版本的Python 经常输出:"Unable to locate DLL"。Python 2.2 和之后的版本输出“Module use of PythonXX.dll conflicts with this version of Python."

还有一种可能,就是我们Win64 系统上的 64-bit Python 安装了32-bit 的PIL,此时,这条命令将提示:不是有效的32位程序,反过来类似。

 

如果你在Mandrake Linux得到"undefined symbol:ImagingRadianceEncode",你安装的是不完整的PIL build。应该从PythonWare 源构建PIL,或确保你安装的是最新的恰当的Mandrake 包。

 

 

除特别声明,本站所有文章均为原创,如需转载请以超级链接形式注明出处:SmartCat's Blog

上一篇: 并发技术4:读写锁

下一篇: [译][python]ImportError:attempted relative import with no known parent package

精华推荐