В интересах людей из будущего, которые сталкиваются с этой ошибкой и не знают, почему, я хотел бы опубликовать свои выводы. Я надеюсь дать общее представление о том, что пошло не так, поскольку точные команды для исправления могут отличаться на вашем компьютере от моей установки 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, чтобы убедиться, что библиотека всегда свежесвязана с текущим путем, который я тестировал.
Мне жаль, что это бессвязный ответ, но было очень неприятно попробовать любое другое решение для копирования и вставки, и ни одно из них не работает. Надеюсь, этот ответ удержит хотя бы нескольких человек от траты многих часов на поиски упрощенного решения.
Удачи!
person
Community
schedule
10.05.2012