Як встановити бібліотеку зображень пітона (PIL)?


35

Як встановити бібліотеку зображень пітона (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 "Precision Pangolin").

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


2
Можливо, ви захочете спробувати використовувати PIL у додатку, можливо, проблема з selftest.py
Aaron Hill

1
У 18.04 схоже, що ти просто робиш sudo apt-get install python-pilабо sudo apt-get install python3-pil.
Shule

^ Однозначно, sudo apt-get install python-pilякраз працював для мене на розп’яні.
alecxe

Відповіді:


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 libs в / 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.
Gus E

1
якщо це відповідає вашим потребам, ви можете спробувати "подушку". Це падіння заміни на PIL.
Ернант

7
Коли це можливо, використовуйте pillow. Це по суті PIL, але насправді підтримується.
Thane Brimhall

Пакет zlib1g-dev недоступний, але посилається на інший пакет. Це може означати, що пакет відсутній, застарілий або доступний лише з іншого джерела E: Неможливо знайти пакет libjpeg E: Неможливо знайти пакет libjpeg-dev E: Неможливо знайти пакет libfreetype6-dev E: Package 'zlib1g -dev 'не має кандидата на встановлення
Aalok

Пакет зображень python у 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 у своєму source.list", тоді переконайтеся, що у вашому /etc/apt/sources.list є записи deb-src, які відповідають вашим записам боргу.

Тоді ви повинні позначити файли з їх фактичного розташування на вашому сервері до місця, де 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 року

Подушка - більш сучасна виделка з ПІЛ.

#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 з Подушкою, не замислюючись.
Євген Нагорний

2
працював і для мене (14.04 LTS 64-розрядний, немодифікований зверху): sudo apt-get build-dep python-imaging sudo apt-get install libjpeg62 libjpeg62-dev
Peter Teoh

Мені просто знадобилося "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 так, це
Lynob

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тепер встановлює Подушка не PIL . Що стосується selftest.py, вам може знадобитися перевірити джерело, щоб запустити його. І звичайно, вам потрібно встановити залежності, якщо ви хочете, щоб PIL підтримував їх, наприклад

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

Запустити версію PIL, більш нову, ніж включена в Ubuntu ::

pip install Pillow

2

Мені потрібно було встановити Piplow у віртуальній програмі 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.