Как установить библиотеку изображений Python (PIL)?


35

Как мне установить библиотеку изображений Python (PIL) в Ubuntu?

Я пытался делать

sudo apt-get install python-imaging

но теперь, когда я запускаю python selftest.py (скрипт, который я получил где-то на сайте http://pythonware.com/products/pil/ ), я получаю (среди других предупреждающих сообщений):

...
*** JPEG support not installed
*** ZLIB (PNG/ZIP) support not installed
...
*** 1 tests of 57 failed.

Я как-то испортил PIL - как мне это исправить?

Может быть, PIL просто отлично, но этот "selftest.py" не совсем подходящая программа для проверки правильности установки PIL - как еще я могу определить, правильно ли установлен PIL или нет?

(Я использую Ubuntu 12.04 LTS "Precise Pangolin").

(В конечном итоге я пытаюсь добавить генератор 2D-штрих-кода к некоторому Python-коду, и все генераторы 2D-штрих-кодов, которые я смог найти, написанные на Python, похоже, используют PIL).


2
Возможно, вы захотите попробовать использовать PIL в приложении, может быть проблема с selftest.py
Aaron Hill

1
В 18.04 это выглядит так, будто вы просто делаете sudo apt-get install python-pilили sudo apt-get install python3-pil.
Шуле

^ Определенно, sudo apt-get install python-pilпросто работал для меня на распбиане.
Алексе

Ответы:


25

Нечто подобное случилось со мной, я решил так

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

И попробуйте там установить через pip install PIL.

Подробнее о том, что pipможно найти здесь . Короче говоря, это удобный (и ставший стандартным) способ установки библиотек Python.

если он продолжает отказывать, это может быть связано с поиском PIL этих библиотек по другому пути.

Оказывается, что установки APT помещают библиотеки в / usr / lib / x86_64-linux-gnu, и PIL будет искать их в / usr / lib / . Таким образом, вы должны создать символические ссылки для PIL, чтобы увидеть их.

Попробуйте посмотреть, существуют ли библиотеки libjpeg и libz в / usr / lib / x86_64-linux-gnu, и создайте символическую ссылку таким образом

sudo ln -s /lib/x86_64-linux-gnu/libz.so.1 /lib/
sudo ln -s /usr/lib/x86_64-linux-gnu/libfreetype.so.6 /usr/lib/
sudo ln -s /usr/lib/x86_64-linux-gnu/libjpeg.so.62 /usr/lib/

Источник: http://jj.isgeek.net/2011/09/install-pil-with-jpeg-support-on-ubuntu-oneiric-64bits/


Это не сработало для меня на Ubuntu 12.04 64bit.
Гас Э

1
если это соответствует вашим потребностям, вы можете попробовать «подушку». Это капля замены для PIL.
Эрнанц

7
По возможности используйте pillow. Это по сути ПИЛ, но на самом деле поддерживается.
Тейн Бримхолл

Пакет zlib1g-dev недоступен, но на него ссылается другой пакет. Это может означать, что пакет отсутствует, был устаревшим или доступен только из другого источника. E: Невозможно найти пакет libjpeg. E: Невозможно найти пакет. Libjpeg-dev. E: Невозможно найти пакет. Libfreetype6-dev. E: Пакет. 'Zlib1g. -dev 'не имеет кандидата на установку
Aalok

Пакет python-imaging в Ubuntu 12.04 LTS связан с библиотекой JPEG, и в журнале изменений упоминается многоархитектное нарушение, которое произошло до июля 2011 года. Возможно, это selftest.pyтоже было нарушено из-за этого, но это не обязательно повлияло на что-либо еще.
Иосип Роден

30

Вышеупомянутое решение не работает для меня в Ubuntu 12.10, так как libjpeg не был доступен в хранилище.

То, что закончилось тем, что работало для меня, было:

sudo apt-get build-dep python-imaging
sudo apt-get install libjpeg62 libjpeg62-dev

Если вы получаете сообщение об ошибке «Вы должны поместить некоторые« исходные »URI в ваш список sources.list», убедитесь, что в вашем /etc/apt/sources.list есть записи deb-src, соответствующие вашим записям deb.

Затем вы должны символически связать файлы с их фактического местоположения на вашем сервере в то место, где их ожидает PIL.

32-битная версия

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

64-битная версия

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

В заключение, pip install PIL

Успех!

введите описание изображения здесь


Обновление сентябрь 2014

Подушка - более современная вилка PIL.

#jpeg support
sudo apt-get install libjpeg-dev
#tiff support
sudo apt-get install libtiff-dev
#freetype support
sudo apt-get install libfreetype6-dev
#openjpeg200support (needed to compile from source)
wget http://downloads.sourceforge.net/project/openjpeg.mirror/2.0.1/openjpeg-2.0.1.tar.gz
tar xzvf openjpeg-2.0.1.tar.gz
cd openjpeg-2.0.1/
sudo apt-get install cmake
cmake .
sudo make install
#install pillow
pip install pillow

1
У меня работает 13.04 с Pillow, без символических ссылок.
Евгений Нагорный

2
работал и для меня (14.04 LTS 64-bit, без изменений сверху): sudo apt-get build-dep python-imaging sudo apt-get install libjpeg62 libjpeg62-dev
Питер Теох

Мне просто нужно было "apt-get build-dep python-imaging"
peterretief

13

Я просто хочу добавить, что pip install pilбольше не работает, по крайней мере, на моей машине, вы должны сделать

pip install PIL --allow-external PIL --allow-unverified PIL


5
Попробуй pip install Pillowвместо pip install pill(последнего не существует)
aclark

@Lynob это то же самое, что PIL? и поддерживается TkInker?
3kstc

@ 3kstc да, это так
Линоб

4

Приведенные выше ответы создают ссылки для библиотек x64 в местах расположения x86. Вместо этого я бы скачал исходный код PIL, а затем добавил эти строки в setup.py:

    add_directory(library_dirs, "/usr/lib/x86_64-linux-gnu")
    add_directory(library_dirs, "/lib/x86_64-linux-gnu")

после этих строк (~ строка 211)

    # standard locations
    add_directory(library_dirs, "/usr/local/lib")
    add_directory(include_dirs, "/usr/local/include")

    add_directory(library_dirs, "/usr/lib")
    add_directory(include_dirs, "/usr/include")

переустановите PIL. Если вы используете pip:

pip uninstall PIL

Затем из исходного каталога запустите:

python setup.py install

2

Это решение работает для меня в Ubuntu 14.04, так как libjpeg не был доступен в репозитории.

Что сработало для меня

sudo apt-get build-dep python-imaging
sudo apt-get install libjpeg62 libjpeg62-dev

2

sudo apt-get install python-imagingсейчас устанавливает подушку, а не ПИЛ . Что касается selftest.py, вам может понадобиться проверить источник, чтобы запустить его. И, конечно, вам нужно установить зависимости, если вы хотите, чтобы PIL их поддерживал, например

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

Чтобы запустить версию PIL новее, чем включена в Ubuntu:

pip install Pillow

2

Мне нужно было pip установить Pillow в virtualenv 14.04 (без использования системных пакетов).

Чтобы построить подушку из PyPI внутри virtualenv (Python 2.7):

$ sudo apt-get build-dep pillow
$ virtualenv venv
$ source venv/bin/activate
(venv)$ pip install pillow

... тогда вы можете импортировать PIL .

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.