2

我使用 FeinCMS 为我的 Django 项目使用 Buildout。我已经在我的 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/组上询问过,但绝对没有任何人帮助过这可能是什么。我已经在网上搜索了所有解决方案,但仍然没有找到一个有效的解决方案。它让我陷入困境,我整天都被困在上面。有谁可能知道问题是什么?

4

1 回答 1

2

我今天经历了同样的事情并找到了解决方案。问题是 PIL 将查找 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您的构建目录中的行。

编辑:再想一想,运行 buildoutCC="gcc -arch i386" bin/buildout也可以。如果要编译胖二进制文件,请记住使用 GCC-4.0 并添加 CPP: CC="gcc-4.0 -arch i386 -arch ppc" CPP="gcc-4.0 -E" bin/buildout

于 2010-02-10T07:27:23.683 回答