Для блага людей из будущего, которые сталкиваются с этой ошибкой и не знают почему, я хотел бы опубликовать свои выводы. Я надеюсь дать общее представление о том, что пошло не так, поскольку точные команды для его исправления могут отличаться на вашей машине, чем на моей установке OSX Lion.
Во-первых, поскольку легко потеряться в потенциальных решениях, важно понимать, что сообщение об ошибке корректно, когда в нем указано Wrong JPEG library version: library is 80, caller expects 62
или какая-либо другая комбинация 62
, 70
и 80
. Эти числа соответствуют различным несовместимым версиям libjpeg. Здесь есть две движущиеся части: динамически загружаемая библиотека jpeg и установка PIL (или Pillow). Сообщение об ошибке говорит о том, что ваша установка PIL была скомпилирована с заголовками из libjpeg версии 6.2, но когда она загружает реальную разделяемую библиотеку, она связывается с версией 8.0.
Исправление заключается в загрузке , сборке и установке требуемой версии libjpeg (подойдет любая, хотя более поздние версии будут проще собираться на OSX Lion):
wget http://www.ijg.org/files/jpegsrc.v8d.tar.gz
tar xzf jpegsrc*
cd jpeg-*
./configure
make
sudo make install
Это должно оставить 2 файла заметки в / usr / local /. А именно /usr/local/lib/libjpeg.8.dylib
и /usr/local/include/jpeglib.h
. Теперь нам просто нужно заставить PIL (или Pillow) использовать эти два файла во время установки, и мы дома свободны. Я знаю, что есть лучший способ сделать это, но взлом (в соответствии с рекомендациями документов PIL) заключается в редактировании setup.py
файла дистрибутива PIL перед его установкой. Вы можете обойтись, просто установив JPEG_ROOT = libinclude('/usr/local')
в верхней части setup.py
, хотя в других местах файла могут потребоваться дальнейшие манипуляции с каталогами.
Когда вы возитесь с путями, вы должны убедиться, что PIL полностью перестроил, прежде чем проверять, связан ли он с нужной библиотекой или нет. Я использовал команду типа rm -rf build && python setup.py install
, чтобы убедиться, что библиотека всегда была свежо связана с текущим путем, который я тестировал.
Извините, это бессвязный ответ, но было очень обескураживающе попробовать все остальные варианты копирования и вставки, и ни один из них не сработал. Надеемся, что этот ответ удерживает, по крайней мере, несколько человек от потери многих часов в поисках упрощенного решения.
Удачи!