Вопрос:

Django OS X Неправильная версия библиотеки JPEG: библиотеке 80, звонящий ожидает 62 sorl.thumbnail

python-imaging-library libjpeg sorl-thumbnail

4723 просмотра

4 ответа

672 Репутация автора

Я использую sorl.thumbnail для django локально на моем Mac и у меня были проблемы с PIL, но сегодня мне наконец удалось установить его - были некоторые проблемы с libjpeg.

Теперь я могу загружать и использовать изображения - но я не могу изменить их размер, используя sorl.thumbnail.

Когда я пытаюсь, я получаю следующую ошибку:

Wrong JPEG library version: library is 80, caller expects 62

Кто-нибудь знает хорошее решение для этого.

Я не знаю, использует ли sorl более раннюю версию libjpeg, или нет, есть ли какая-то призрачная установка чего-то еще, оставшегося после всех моих попыток различными способами.

Я имею :

  1. PIL 1.1.7
  2. libjpeg 8.

кто-нибудь знает подход?

Автор: niklasdstrom Источник Размещён: 24.10.2011 02:38

Ответы (4)


0 плюса

1570 Репутация автора

Если у вас установлен macports, вы должны сделать:

$ sudo port selfupdate
$ sudo port install py27-pil

Это проще, чем метод easy_install, поскольку macports устанавливает правильные зависимости.

Автор: Maxime Размещён: 31.01.2012 05:01

7 плюса

644 Репутация автора

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

Я сожалею, что это бессмысленный ответ, но было очень обескураживающе попробовать все остальные варианты копирования и вставки, и ни одно из них не сработало. Надеемся, что этот ответ удерживает как минимум несколько человек от того, чтобы тратить много часов на поиски упрощенного решения.

Удачи!

Автор: Don Spaulding Размещён: 10.05.2012 04:56

0 плюса

638 Репутация автора

У меня была немного другая проблема, чем у ОП, но я хотел поделиться своим решением здесь, чтобы помочь кому-то в будущем.

ОС: OSX El Capitan Я установил libjpeg-turbo из скомпилированных двоичных файлов на их веб-сайте. Однако я не знал, что на моем Mac уже установлена ​​другая версия libjpeg. Я строил свой файл c, как это gcc myfile.c -o myfile.out -L /opt/libjpeg-turbo/lib -ljpeg. Это получило библиотеку из правильного местоположения, но компоновщик получал включенный файл заголовка jpeglib.hиз предустановленного местоположения. Я изменил мою команду сборки на это: gcc myfile.c -o myfile.out -I/opt/libjpeg-turbo/include/ -L /opt/libjpeg-turbo/lib -ljpegи это сработало. Нет больше библиотеки 80, звонящий ожидает 62!

Автор: Sid Размещён: 24.08.2016 01:44

0 плюса

11 Репутация автора

Как и в предыдущем ответе, у меня была немного другая проблема, чем у ОП, но я хотел поделиться своим решением здесь, чтобы помочь кому-то в будущем.

Единственное, что сработало для меня, - это принуждение pip к созданию подушки из исходного кода после установки dev- версии необходимых библиотек (мой код редактировал jpg и добавлял метку с использованием пользовательского шрифта). Это было на встроенном устройстве на базе ARM, работающем под управлением Ubuntu Linux с использованием Python 3.7.3

apt-get install -y libjpeg-dev libfreetype6-dev
pip3 install pillow --global-option="build_ext" --global-option="--enable-jpeg" --global-option="--enable-freetype" 
Автор: David Grob Размещён: 22.06.2019 04:02
Вопросы из категории :
32x32