Наличие значения исключения: модуль _imaging C не установлен с моим Buildout/Python/Django/PIL на Mac OSX SL?

Я использую 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/группе, но без какой-либо помощи, что это может быть. Я искал по всей сети решения и до сих пор не нашел того, который работает. Это ныряет меня в стену, я застрял на этом весь день. Может кто знает в чем проблема?


person littlejim84    schedule 23.01.2010    source источник


Ответы (1)


Я прошел через то же самое сегодня и нашел решение. Проблема в том, что 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 в вашем каталоге сборки.

Редактировать. Если подумать, сборка с CC="gcc -arch i386" bin/buildout также будет работать. Если вы хотите скомпилировать толстый двоичный файл, не забудьте использовать GCC-4.0 и добавить CPP: CC="gcc-4.0 -arch i386 -arch ppc" CPP="gcc-4.0 -E" bin/buildout.

person Kridsada Thanabulpong    schedule 10.02.2010
comment
Это точно. Медиатека FeinCMS делает ее немного более заметной, когда PIL не установлен, потому что она пытается определить тип медиафайла при загрузке и просматривает файл, когда расширение говорит, что это изображение. - person Matthias Kestenholz; 23.09.2010