В Ubuntu эту библиотеку можно установить из репазитория. Но т.к. я использую в разработке zc.buildout и стараюсь создавать пакеты для деплоя максимально независимые от того, что установлено в системном Python-е , то убунтовский репазиторий мне не подходит. Следовательно PIL у меня собирается из исходников.
Начиная с Ubuntu 11.04 в системе произошли некоторые изменения, в результате которых установка PIL из исходников несколько затруднилась.
Проблема возникла из-за того, что Ubuntu 11.04 стала поддерживать одновременную установку пакетов предназначенных для разных архитектур (multiarch support). Т.е. теперь можно достаточно просто в 64-битной системе устанавливать 32-ух битные приложения и библиотеки.
В нашем случае это сказалось на расположении библиотек libjpeg62-dev и zlib1g-dev, которые необходимы для установки PIL из исходников. Если раньше они располагались в папке /usr/lib, то теперь они находятся в /usr/lib/i386-linux-gnu (или /usr/lib/x86_64-linux-gnu/ если у вас 64-битная система). Из-за этого инсталятор PIL не может найти этих библиотек, и собирает PIL без поддержки JPEG и PNG. После установки можно увидеть примерно следующие строчки:
*** JPEG support not available
*** ZLIB (PNG/ZIP) support not available
Вот первый вариант решения проблемы, так сказать "в лоб":
sudo ln -s /usr/lib/i386-linux-gnu/libfreetype.so /usr/lib/
sudo ln -s /usr/lib/i386-linux-gnu/libz.so /usr/lib/
sudo ln -s /usr/lib/i386-linux-gnu/libjpeg.so /usr/lib/
Второй вариант - в setup.py после строчки:
add_directory(library_dirs, "/usr/lib")добавить:
add_directory(library_dirs, "/usr/lib/i386-linux-gnu")Теоретически должно сработать, но не проверял.
Так же можно вместо libjpeg62-dev установить libjpeg8-dev. PIL вполне нормально собирается с ним. Но вот для поддержки PNG альтернативы к сожалению нет.
Ну и самый лучший на мой взгляд способ - не использовать PIL. Вместо этого использовать полностью совместимый с ним форк - Pillow. В нём поддержка multiarch уже давно добавлена. Кроме того в нём добавлена поддержка Linux3, setuptools (distribute) и проведён рефакторинг кода. Поддержка пакета осуществляется силами сообщества Plone и обновления выходят достаточно часто.
Комментариев нет:
Отправить комментарий