Сборка PIL с зависимостями (Debian 7)
dunmaksim
17:10
сборка
,
установка
,
debian
,
freetype2
,
imaging
,
jpeg
,
lib
,
libjpeg
,
PIL
,
png
,
python
Комментариев нет
Данная статья рассказывает о том, как правильно собрать PIL для поддержки различных форматов.
Описание проблемы
Несмотря на то, что уже давно существует и активно развивается библиотека Pillow, импортирующая функции для обработки изображений средствами Python, в некоторых проектах до сих пор используется устаревший (последняя версия вышла в 2009 году) модуль PIL. Если Вы из тех "везунчиков", кому приходится поддерживать старые проекты, то эта статья для Вас. При установке PIL в виртуальное окружение вводится командаpip install pilПосле этого начинается процесс загрузки расширения и его сборки, выводится куча сообщений, и в самом конце можно увидеть следующий текст:
PIL 1.1.7 SETUP SUMMARY -------------------------------------------------------------------- version 1.1.7 platform linux2 2.6.8 (unknown, Jan 26 2013, 14:35:25) [GCC 4.7.2] -------------------------------------------------------------------- *** TKINTER support not available (Tcl/Tk 8.5 libraries needed) *** JPEG support not available *** ZLIB (PNG/ZIP) support not available *** FREETYPE2 support not available *** LITTLECMS support not available -------------------------------------------------------------------- To add a missing option, make sure you have the required library, and set the corresponding ROOT variable in the setup.py script.Что означает примерно следующее: модуль успешно собран, но работать не будет, т.к. ни одно из требующихся расширений установлено не было. Немного погуглив, я натолкнулся на кучу форумов, где описывалось решение, заключающееся в создании символических ссылок на нужные библиотеки в каталоге /usr/lib, однако, ни одно из этих решений не оказалось рабочим. В этой статье я описываю своё решение сборки PIL с поддержкой практически всех нужных расширений.
Установка
Для сборки и установки PIL с зависимостями нам потребуются некоторые дополнительные пакеты- python2.6-dev - заголовочные файлы для сборки Python2.6. Если используете другой - указываете другой.
- libjpeg62-dev - для поддержки JPEG (в Debian есть также libjpeg8-dev, но она не подойдёт)
- zlib1g-dev - поддержка PNG
- libfreetype6-dev - поддержка шрифтов
- liblcms1-dev - поддержка LITTLE CMS. Что это такое, я не знаю, можно не ставить.
apt-get install libjpeg62-dev zlib1g-dev libfreetype6-dev liblcms1-devВсе необходимые зависимости, в том числе GCC, если он не установлен, установятся сами. Итак, необходимые системные пакеты установлены. Теперь нужно будет сделать несколько дополнительных действий с самой библиотекой. Первым делом её нужно скачать с официального сайта.
wget http://effbot.org/downloads/Imaging-1.1.7.tar.gzРаспакуем архив:
tar xfv Imaging-1.1.7.tar.gzЗайдём в созданную папку и отредактируем файл setup.py
cd Imaging-1.1.7 nano setup.pyТут нужно внести следующие изменения:
TCL_ROOT = NONE JPEG_ROOT = NONE ZLIB_ROOT = NONE TIFF_ROOT = NONE FREETYPE_ROOT = NONE LCMS_ROOT = NONEзаменяем на
TCL_ROOT = '/usr/lib/x86_64-linux-gnu/' JPEG_ROOT = '/usr/lib/x86_64-linux-gnu/' ZLIB_ROOT = '/usr/lib/x86_64-linux-gnu/' TIFF_ROOT = '/usr/lib/x86_64-linux-gnu/' FREETYPE_ROOT = '/usr/lib/x86_64-linux-gnu/' LCMS_ROOT = '/usr/lib/x86_64-linux-gnu/'В x86-системах вместо x86_64 нужно вводить i386. Тем самым мы указываем, откуда брать библиотеки. Теперь можно попробовать собрать PIL со всеми расширениями (без реальной установки):
python setup.py build_ext -iЕсли сообщение выглядит примерно так:
-------------------------------------------------------------------- PIL 1.1.7 SETUP SUMMARY -------------------------------------------------------------------- version 1.1.7 platform linux2 2.6.8 (unknown, Jan 26 2013, 14:35:25) [GCC 4.7.2] -------------------------------------------------------------------- *** TKINTER support not available (Tcl/Tk 8.5 libraries needed) --- JPEG support available --- ZLIB (PNG/ZIP) support available --- FREETYPE2 support available --- LITTLECMS support available -------------------------------------------------------------------- To add a missing option, make sure you have the required library, and set the corresponding ROOT variable in the setup.py script.можно смело устанавливать PIL в виртуальное окружение Вашего проекта. Перед этим рекомендую удалить старую версию через
pip uninstall pil -yи удалить файлы в каталоге lib/site-packages виртуального окружения:
cdsitepackages rm -rf PIL*Установка PIL:
python setup.py install
Заключение
В некоторых проектах БАРС Груп используется PIL, он прописан в зависимостях для установки их пакетов через setup-tools. В этом случае я делаю так:- Устанавливаю PIL
- Устанавливаю пакет, провожу миграции и т.д.
- Удаляю PIL и ставлю Pillow, т.к. Pillow импортирует те же самые функции и пространства имён, что и PIL.
Подписаться на:
Комментарии к сообщению
(
Atom
)
Комментариев нет :
Отправить комментарий