Ответ 1
Этот поток на форумах ubuntu охватывает эту тему.
Я использую Ubuntu и VitualEnv для моего проекта Django.
У меня есть библиотека PIL, установленная с помощью Synaptic Package Manager, и она работает нормально. Но когда я создаю VitrualEnv и пытаюсь установить PIL с помощью pip, он устанавливает, но я получаю это странное поведение:
--------------------------------------------------------------------
PIL 1.1.7 SETUP SUMMARY
--------------------------------------------------------------------
version 1.1.7
platform linux2 2.7.1+ (r271:86832, Apr 11 2011, 18:13:53)
[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
--------------------------------------------------------------------
To add a missing option, make sure you have the required
library, and set the corresponding ROOT variable in the
setup.py script.
Я надеялся, что могу использовать требования .txt для всех моих зависимостей, но может быть, PIL должен быть каким-то образом установлен вручную... но как?
Изменить: Спасибо, Джон Кейс, вы правы, я бегу:
sudo ln -s /usr/lib/x86_64-linux-gnu/libfreetype.so /usr/lib/
sudo ln -s /usr/lib/x86_64-linux-gnu/libz.so /usr/lib/
sudo ln -s /usr/lib/x86_64-linux-gnu/libjpeg.so /usr/lib/
и после другой попытки установить PIL я получаю:
--------------------------------------------------------------------
PIL 1.1.7 SETUP SUMMARY
--------------------------------------------------------------------
version 1.1.7
platform linux2 2.7.1+ (r271:86832, Apr 11 2011, 18:13:53)
[GCC 4.5.2]
--------------------------------------------------------------------
*** TKINTER support not available
--- JPEG support available
--- ZLIB (PNG/ZIP) support available
--- FREETYPE2 support 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.
Изменить: вам может потребоваться установить libfreetype6-dev libjpeg8-dev
Изменить: Еще один хороший вариант - использовать Pillow вместо PIL
Этот поток на форумах ubuntu охватывает эту тему.
И на всякий случай, если вы используете virtualenv, вам не нужно создавать общесистемные символические ссылки, вот универсальное обходное решение, которое работает в любой архитектуре:
ln -s /usr/lib/`dpkg-architecture -qDEB_HOST_MULTIARCH`/libz.so $VIRTUAL_ENV/lib/
ln -s /usr/lib/`dpkg-architecture -qDEB_HOST_MULTIARCH`/libfreetype.so $VIRTUAL_ENV/lib/
ln -s /usr/lib/`dpkg-architecture -qDEB_HOST_MULTIARCH`/libjpeg.so $VIRTUAL_ENV/lib/
И вам нужно выполнить эту строку внутри виртуального сеанса активированной оболочки, символические ссылки будут созданы внутри вашего каталога virtualenv lib
.
Команда dpkg-architecture -qDEB_HOST_MULTIARCH
используется для обнаружения основного каталога системных библиотек (uname -i
не является надежным). И переменная окружения $VIRTUAL_ENV
устанавливается virtualenv activate
script.
Решение, которое, как представляется, работает для нас (начиная с PIL 1.7.7), состоит в том, чтобы сначала удалить PIL, а затем Pillow, а затем установить подушку pupupupuprade. Конечно, вам нужно установить libjpeg8-dev.