Правильная установка PIL в виртуальном окружении


Очередной переезд всех моих сайтов на новую виртуалку снова принёс кучу ошибок от джанги. Причина — PIL (python image library) в виртуальном окружении собрался без поддержки jpeg и zlib. Причина проста до безобразия — инсталлятор не может найти нужные пакеты библиотек (почему — объясню чуть позже).

В интернетах есть множество решений, включающие скачивание исходников libjpeg, самостоятельную её компиляцию и правку путей к свежесобранной библиотеке в setup.py. При этом, нужно не забыть сначала скачать исходники PIL, но не устанавливать, а потом установить, но не скачивать. Есть другое решение, которое мне гораздо больше понравилось, но это решние требует наличия прав суперпользователя.

Решение просто до безобразия — положить библиотеки туда, где инсталлятор PIL предполагает их найти.

Играем в бюро находок

Мне нужны jpeg и zlib, поэтому ставим из dev-версии:

sudo apt-get install zlib1g-dev
sudo apt-get install libjpeg-dev

Инсталлятор считает, что библиотеки будут в /usr/lib, однако в Ubutu они лежат совсем в другом каталоге, чтобы никто не расслаблялся, наверно.

Симлинк нам в помощь:

sudo ln -s /usr/lib/i386-linux-gnu/libz.so /usr/lib/
sudo ln -s /usr/lib/i386-linux-gnu/libjpeg.so /usr/lib/

Если у вас вдруг 64-битная система — ищите библиотеки в /usr/lib/x86_64-linux-gnu.

Ставим PIL самым простым и обычным способом:

pip install pil