После перехода на Snow Leopard в Django перестали работать ImageField’ы. Причина оказалась в неработоспособном PIL’е, а точней в его привязке к libjpeg. (типичное сообщение об ошибке:
ImportError: dlopen(/Library/Python/2.6/site-packages/PIL/_imaging.so, 2): Symbol not found: _jpeg_resync_to_restart
Решение проблемы частично описано здесь (english) качаем отсюда:
tar zxvf jpegsrc.v6b.tar.gz
cd jpeg-6b
cp /usr/share/libtool/config/config.sub .
cp /usr/share/libtool/config/config.guess .
./configure --enable-shared --enable-static
make
sudo make install
Однако мне “повезло” и я оказался в числе тех, у кого это сразу не заработало - причина была в “зоопарке” установленных libjpeg’ов.
Итак, делаем следующее:
Смотрим все зависимости _imaging:
otool -L /Library/Python/2.6/site-packages/PIL/_imaging.so
Получаем что-то вроде:
/Library/Python/2.6/site-packages/PIL/_imaging.so: /sw/lib/libjpeg.62.dylib (compatibility version 63.0.0, current version 63.0.0)
Дальше можно решить двумя способами: а) удалить “зоопарковую” библиотеку (в моем случае - из /sw/lib и пересобрать все заново) б) если удалять - не вариант, то можно перелинковать питоновский _imaging на правильную, свежесобраную библиотеку:
install_name_tool -change /sw/lib/libjpeg.62.dylib /usr/local/lib/libjpeg.62.dylib _imaging.so
После этого все должно работать :)