Установка PIL с поддержкой JPEG на Ubuntu 12.04 LTS

  • Опубликовано:
  • Теги: pil
В последних версиях Ubuntu при установке PIL с помощью pip есть какая-то проблема с путями, поэтому библиотека собирается неправильно. Данная инструкция поможет решить проблему. Для компиляции PIL понадобятся вспомогательные библиотеки:
sudo apt-get install libjpeg-dev libfreetype6 libfreetype6-dev zlib1g-dev
Примечание:
В Ubuntu 14.04 нужно установить эти библиотеки:
apt-get install libjpeg-dev libtiff5-dev libjpeg8-dev zlib1g-dev libfreetype6-dev liblcms2-dev libwebp-dev tcl8.6-dev tk8.6-dev python-tk -y
Если сейчас мы выполним pip install PIL без них, то скомпилируется без поддержки JPEG:
    ---------------------------------------------------------------
*** TKINTER support not available
--- JPEG support not available
--- ZLIB (PNG/ZIP) support not available
--- FREETYPE2 support not available
*** LITTLECMS support not available
---------------------------------------------------------------
Оказалось, APT устанавливает библиотеки в каталог /usr/lib/i386-linux-gnu, а PIL ищет их в каталоге /usr/lib. Если у вас 64-разрядная система, то библиотеки устанавливаются в /usr/lib/x86_64-linux-gnu.

Теперь создадим символьные ссылки:
sudo ln -s /usr/lib/`uname -i`-linux-gnu/libfreetype.so /usr/lib/
sudo ln -s /usr/lib/`uname -i`-linux-gnu/libjpeg.so /usr/lib/
sudo ln -s /usr/lib/`uname -i`-linux-gnu/libz.so /usr/lib/
sudo ln -s /usr/include/freetype2 /usr/include/freetype # Upd. 30/12/2014
где uname -i подставит архитектуру вашей машины. Заново собираем PIL: pip install -U PIL и получаем:
    --------------------------------------------------------------------
*** TKINTER support not available
--- JPEG support available
--- ZLIB (PNG/ZIP) support available
--- FREETYPE2 support available
*** LITTLECMS support not available
--------------------------------------------------------------------
Профит.

Update для 14.04

Во-первых, в этой версии Ubuntu баг устранили, поэтому достаточно будет переустановить модуль. Во-вторых, устарел PIL, причем настолько, что его убрали из стандартных репозиториев, а на смену ему пришел Pillow, поэтому переустанавливаем его.
pip uninstall Pillow
pip install Pillow
Если все же какие-то старые модули требуют именно PIL, то ставим его из частного репозитория как описано здесь.