Ошибка в PIL, установленном с PIP - Django, Python - PullRequest
3 голосов
/ 06 декабря 2011

Я установил PIL, используя PIP. Однако, используя PIL на Django, при попытке загрузить файл .jpg я получаю сообщение об ошибке:

Загрузить действительное изображение. Загруженный файл не был изображением или поврежденным изображением.

Я прочитал в Интернете об этой ошибке, и было решено удалить скомпилированные файлы для текущей ОС, а затем снова использовать setup.py.

Однако, поскольку я установил PIL с PIP, у меня нет setup.py и папки с файлами, скомпилированными для моей конкретной ОС. Это Mac OSX Lion.

Обновление: у меня не установлен libjpeg на моем компьютере. У меня это сейчас есть, и я пытаюсь изменить конфигурацию PIL, чтобы она указала на библиотеку libjpeg.

Ответы [ 5 ]

11 голосов
/ 06 декабря 2011

PIL нужно найти некоторые библиотеки, такие как libjpeg и libz во время установки.

Мы столкнулись с такими же проблемами на нашем сервере, и мы установили PIL для всей системы, используя

aptitude install python-imaging

Этобыстрое исправление, и оно работает для нас.

Кроме того, поиск в Google по этому поводу показывает два способа решения этой проблемы с помощью PIL.

Первый - символическая ссылка libjpeg.so, libfreetype.so и libz.so от /usr/lib/x86_64-linux-gnu/ до /usr/lib

Второй * * * * * * * * * * * *1010* использует ключ pip --no-install для загрузки пакета и затем изменяет setup.pyпоставить туда правильные пути

1. Call 'pip install -I pil --no-install' to download and unpack the PIL source into your build directory;
2. Get into your build directory and edit setup.py;
3. Find the line that says 'add_directory(library_dirs, "/usr/lib")' (line 214 here);
4. Add the line 'add_directory(library_dirs, "/usr/lib/x86_64-linux-gnu/")' afterwards;
5. Call 'pip install -I pil --no-download' to finish the installation.

Если у вас есть арка i386, используйте i386-linux-gnu вместо x86_64-linux-gnu

4 голосов
/ 08 декабря 2012

если вы используете pip и virtualenv, нет необходимости связываться с системными путями.

PIL, установленный через pip, не может найти соответствующие библиотеки в ubuntu 12.10 (и некоторых более ранних) в x86_64

исправить:

# commands for recent debian/ubuntu
sudo apt-get install libjpeg libjpeg-dev libfreetype6 libfreetype6-dev zlib1g-dev

for i in libjpeg.so libfreetype.so libz.so
    do ln -s /usr/lib/x86_64-linux-gnu/$i $VIRTUAL_ENV/lib/
done
pip uninstall pil
pip install pil
3 голосов
/ 06 декабря 2011

Вы получаете эту ошибку, если PIL скомпилирован без поддержки jpeg. Я также получил это, когда каталог назначения был недоступен для записи.

После компиляции PIL, если вы читаете

Поддержка JPEG недоступна

отсутствует библиотека для обработки файлов JPEG или ее части. Исправьте это, просто установив библиотеку (в моем случае это была libjpeg62-dev) и снова запустите pip, возможно, в virtualenv. Если этого недостаточно, возможно, ваша система имеет еще одну причуду. Посмотрите на этот пост (ubuntuforums) для исправления.

2 голосов
/ 06 декабря 2011

Мое исправление заключается в том, чтобы убедиться, что у вас установлены пакеты libjpeg-dev и libpng-dev перед установкой PIL из pip.

sudo apt-get install libjpeg-dev libpng-dev

, вероятно, подойдет. Затем pip получает PIL из исходного кода, компилирует с поддержкой jpeg и png.

1 голос
/ 06 декабря 2011

Установлен ли в вашей системе соответствующий jpeg декодер ?

Проверьте это руководство , чтобы узнать, как запустить PIL в Ubuntu / Virtualenv.

...