拥有;异常值:“U成像C模块未安装”;在Mac OSX SL上使用我的Buildout/Python/Django/PIL?

拥有;异常值:“U成像C模块未安装”;在Mac OSX SL上使用我的Buildout/Python/Django/PIL?,python,django,python-imaging-library,buildout,Python,Django,Python Imaging Library,Buildout,我在Django项目中使用Buildout和FeinCMS。我在Mac OSX Snow Leopard上进行了很好的本地设置,当我使用runserver时,不会出现任何错误。但是当我在管理区用FeinCMS上传一张图片时,它会出现一个错误 “异常值:未安装_ImagingC模块”错误 我的回溯在这里: 我的buildout.cfg文件如下所示: [buildout] parts = zlib libjpeg PILwoTk

我在Django项目中使用Buildout和FeinCMS。我在Mac OSX Snow Leopard上进行了很好的本地设置,当我使用runserver时,不会出现任何错误。但是当我在管理区用FeinCMS上传一张图片时,它会出现一个错误 “异常值:未安装_ImagingC模块”错误

我的回溯在这里:

我的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}
[libjpeg]
recipe = hexagonit.recipe.cmmi
url = http://www.ijg.org/files/jpegsrc.v8.tar.gz
environment =
  CC=gcc -arch i386

我已经在FeinCMS group和Django IRC/group上询问过,但在这方面没有任何人的帮助。我在网上到处寻找解决方案,但仍然没有找到一个有效的。它把我逼到了墙头,我一整天都被困在上面。有人知道问题出在哪里吗

我今天也经历了同样的事情,找到了解决办法。问题是,PIL将查找32位libjpeg,而雪豹将在默认情况下将库编译为x86_64。通过将libjpeg部分修改为如下所示,可以解决此问题:

   [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}
[libjpeg]
recipe = hexagonit.recipe.cmmi
url = http://www.ijg.org/files/jpegsrc.v8.tar.gz
environment =
  CC=gcc -arch i386
您可以通过运行以下命令检查正在使用的库
\u imaging.so

otool -L path/to/PIL/_imaging.so
它应该在构建目录中输出指向
libjpeg.8.dylib
的行


Edit:再想一想,使用
CC=“gcc-arch i386”bin/buildout运行buildout也会起作用。如果要编译fat二进制文件,请记住使用GCC-4.0并添加CPP:
CC=“GCC-4.0-arch i386-arch ppc”CPP=“GCC-4.0-E”bin/buildout

,正是这样。当未安装PIL时,FeinCMS媒体库会使其更加可见,因为它会尝试确定上载时的媒体文件类型,并在扩展名显示为图像时查看该文件。