在Mac OSX SL上,Buildout/Python/Django/PIL报错“异常值: _imaging C模块未安装”?
我在用Buildout来管理我的Django项目,里面用到了FeinCMS。现在在我的Mac OSX Snow Leopard上本地环境设置得很好,使用runserver的时候没有任何错误。但是,当我在管理后台用FeinCMS上传图片时,却出现了一个错误:“异常值:_imaging C模块没有安装”。
我的错误追踪信息在这里:http://dpaste.com/149492/
我的buildout.cfg文件是这样的:
[buildout]
parts =
zlib
libjpeg
PILwoTk
django-mptt
django-staticfiles
django
eggs =
PILwoTk
feincms
[zlib]
recipe = hexagonit.recipe.cmmi
url = http://www.zlib.net/zlib-1.2.3.tar.gz
configure-options = --shared
[libjpeg]
recipe = hexagonit.recipe.cmmi
url = http://www.ijg.org/files/jpegsrc.v8.tar.gz
[PILwoTk]
recipe = zc.recipe.egg:custom
find-links = http://download.zope.org/distribution/
include-dirs =
${zlib:location}/include
${libjpeg:location}/include
library-dirs =
${zlib:location}/lib
${libjpeg:location}/lib
rpath =
${zlib:location}/lib
${libjpeg:location}/lib
[django-mptt]
recipe = infrae.subversion
urls = http://django-mptt.googlecode.com/svn/trunk/mptt mptt
[django-staticfiles]
recipe = mercurialrecipe
repository = http://bitbucket.org/jezdez/django-staticfiles/
[django]
recipe = djangorecipe
version = 1.1.1
project = recoilmedia
eggs = ${buildout:eggs}
extra-paths =
${django-mptt:location}
${django-staticfiles:location}
我在FeinCMS的讨论组和Django的IRC/讨论组里问过这个问题,但没有人能给我任何帮助。我在网上搜索了很多解决方案,但还是没有找到一个能用的。这个问题让我很烦,我今天都被这个困住了。有没有人知道这可能是什么问题呢?
1 个回答
2
我今天也遇到了同样的问题,找到了解决办法。问题在于,PIL(Python Imaging Library)会寻找32位的libjpeg库,而Snow Leopard系统默认会把这个库编译成x86_64格式。我们可以通过修改libjpeg的设置来解决这个问题,修改后的样子应该是这样的:
[libjpeg]
recipe = hexagonit.recipe.cmmi
url = http://www.ijg.org/files/jpegsrc.v8.tar.gz
environment =
CC=gcc -arch i386
你可以通过运行以下命令来检查一下_imaging.so
使用的是哪个库:
otool -L path/to/PIL/_imaging.so
运行后应该会输出一行,指向你构建目录中的libjpeg.8.dylib
。
补充:再想想,使用CC="gcc -arch i386" bin/buildout
来运行buildout也可以解决问题。如果你想编译一个包含多种架构的二进制文件,记得使用GCC-4.0,并添加CPP:CC="gcc-4.0 -arch i386 -arch ppc" CPP="gcc-4.0 -E" bin/buildout
。