воскресенье, 17 июля 2011 г.

Установка django-photologue в virtualenv

Недавно я встал на путь истины и начал использовать virtualenv в своих Django-поделках. Моё мнение насчёт virtualenv кратко изложено в лирическом отступлении в конце статьи, а сейчас я расскажу о проблемах, с которыми я столкнулся при установке django-photologue в virtualenv под Ubuntu 11.04.

IOError: encoder jpeg not available

Итак, выполнив установив и подключив django-photologue:
virtualenv --no-site-packages gallery && cd gallery
source ./bin/activate
pip install Django PIL django-photologue
# создаём сайт и подключаем в него django-photologue
пытаемся загрузить изображение (photologue.models.Photo), хотя бы даже через административную панель, получаем ошибку
IOError: encoder jpeg not available
Эта ошибка означает, что на момент установки PIL в системе не было библиотек для работы с JPEG. Кстати, PIL об этом сообщает в конце установки:
--------------------------------------------------------------------
PIL 1.1.7 SETUP SUMMARY
--------------------------------------------------------------------
version 1.1.7
platform linux2 2.7.1+ (r271:86832, Apr 11 2011, 18:05:24)
[GCC 4.5.2]
--------------------------------------------------------------------
*** TKINTER support not available
*** JPEG support not available
*** ZLIB (PNG/ZIP) support not available
*** FREETYPE2 support not available
*** LITTLECMS support not available
--------------------------------------------------------------------
Решение простое и леко гуглится: установить libjpeg62-dev и переустановить PIL:
sudo apt-get install libjpeg-dev libfreetype6-dev zlib1g-dev
pip install -U PIL
Пакеты libfreetype6-dev и zlib1g-dev добавят поддержку FREETYPE2 и PNG/ZIP соответственно.
Судя по форумам и блогам, многим это помогает. В моём же случае пришлось PIL так и не увидел установленных библиотек, всё также сообщая об отсутствии поддержки JPEG и т.п., а при загрузке фотографии выдавал ошибку:
Image upload file damaged or not image.
Или при русском LANGUAGE_CODE:
Файл повреждён или не изображение.

Image upload file damaged or not image.

Если вам также не повезло, то вот решение: создать симлинки на нужные библиотеки в подкаталоге lib/ виртуального окружения и переустановить PIL. То есть:
cd gallery/
source ./bin/activate
ln -s /usr/lib/i386-linux-gnu/libfreetype.so
ln -s /usr/lib/i386-linux-gnu/libjpeg.so
ln -s /usr/lib/i386-linux-gnu/libz.so
pip install -U PIL

Лирика

Правда, сейчас я не понимаю, чего я ждал. Поначалу меня останавливало, что в virtualenv придётся долго разбираться и читать сотни килобайт доков, что его использование подразумевает большой опыт и вообще вход только для тру-питонистов.
В реальности же странички на PyPi хватает за глаза, чтобы начать использовать virtualenv c пользой для себя. Всё что нужно знать, это 2 команды:
virtualenv ENV  # создание окружения
pip install PKG_NAME  # установка пакета
Всё просто: virtualenv --- это инструмент от программистов для программистов, поэтому оно работает на инутитивно понятном для программиста уровне.

1 комментарий:

  1. Шаблоны действующих документов по стандартизации https://www.obzor.lt/news/n13503.html
    Образцы уставных документов по декларированию https://www.fishnet.ru/users/80224/
    Образцы уставных документов по стандартизации http://otkaznoe-pismo.mirtesen.ru/
    Примеры уставных документов по стандартизации https://sertifikatsiya.mirtesen.ru/

    ОтветитьУдалить