Jak zainstalować bibliotekę obrazowania Pythona (PIL)?


35

Jak zainstalować bibliotekę obrazowania Pythona (PIL) na Ubuntu?

Próbowałem zrobić

sudo apt-get install python-imaging

ale teraz, gdy uruchamiam python selftest.py (skrypt, który dostałem skądś na stronie http://pythonware.com/products/pil/ ), otrzymuję (między innymi komunikaty ostrzegawcze):

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

Czy w jakiś sposób pomieszałem PIL - jak to naprawić?

Może PIL jest w porządku, ale ten „selftest.py” nie jest tak naprawdę odpowiednim programem do sprawdzania, czy PIL jest zainstalowany poprawnie - jak inaczej mogę stwierdzić, czy PIL jest zainstalowany poprawnie, czy nie?

(Używam Ubuntu 12.04 LTS „Precise Pangolin”).

(Ostatecznie staram się dodać generator kodów kreskowych 2D do jakiegoś kodu Pythona, a wszystkie generatory kodów kreskowych 2D, które mogłem znaleźć, napisane w Pythonie, wszystkie używały PIL).


2
Możesz spróbować użyć PIL w aplikacji, może to być po prostu problem z selftest.py
— Aaron Hill

1
W 18.04 wygląda na to, że po prostu to robisz sudo apt-get install python-pillub sudo apt-get install python3-pil.
— Shule

^ Zdecydowanie, sudo apt-get install python-pilwłaśnie dla mnie pracowałeś na raspbian.
— alecxe

Odpowiedzi:


25

Coś podobnego mi się stało, rozwiązałem w ten sposób

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

I spróbuj tam zainstalować przez pip install PIL.

Więcej o tym, co pipmożna znaleźć tutaj . W skrócie jest wygodny (i staje się standardem) sposób instalowania bibliotek Pythona.

jeśli nadal zawiedzie, może to wynikać z przeszukiwania bibliotek PIL tymi ścieżkami.

Okazuje się, że instalacje APT umieszczają biblioteki pod / usr / lib / x86_64-linux-gnu, a PIL będzie ich szukał w / usr / lib / . Musisz więc utworzyć dowiązania symboliczne, aby PIL je zobaczył.

Spróbuj sprawdzić, czy biblioteki libjpeg i libz istnieją w katalogu / usr / lib / x86_64-linux-gnu i utwórz w ten sposób dowiązanie symboliczne

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/

Źródło: http://jj.isgeek.net/2011/09/install-pil-with-jpeg-support-on-ubuntu-oneiric-64bits/


To nie działało dla mnie na Ubuntu 12.04 64bit.
— Gus E

1
jeśli pasuje do twoich potrzeb, możesz wypróbować „poduszkę”. Jest to spadek w zamian za PIL.
— Hernantz

7
Jeśli to możliwe, używaj pillow. Zasadniczo jest to PIL, ale faktycznie jest utrzymywane.
— Thane Brimhall

Pakiet zlib1g-dev nie jest dostępny, ale odwołuje się do niego inny pakiet. Może to oznaczać, że brakuje pakietu, został on przestarzały lub jest dostępny tylko z innego źródła. E: Nie można zlokalizować pakietu libjpeg E: Nie można zlokalizować pakietu libjpeg-dev E: Nie można zlokalizować pakietu libfreetype6-dev E: Pakiet 'zlib1g -dev 'nie ma kandydata do instalacji
— Aalok

Pakiet obrazowania Pythona w Ubuntu 12.04 LTS jest połączony z biblioteką JPEG, a dziennik zmian wspomina o łamaniu wielu wątków przed lipcem 2011 r. Być może to selftest.pyteż zostało zepsute, ale to niekoniecznie miało wpływ na nic innego.
— Josip Rodin

30

Powyższe rozwiązanie nie działało dla mnie na Ubuntu 12.10, ponieważ libjpeg nie był dostępny w repozytorium.

W końcu dla mnie pracowało:

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

Jeśli pojawi się błąd „Musisz umieścić URI„ source ”w pliku sources.list, upewnij się, że twój /etc/apt/sources.list ma wpisy deb-src, które pasują do twoich wpisów deb.

Następnie musisz dowiązać pliki z ich rzeczywistej lokalizacji na serwerze do lokalizacji, w której oczekuje ich PIL.

Wersja 32-bitowa

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

Wersja 64-bitowa

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

Wreszcie, pip install PIL

Sukces!

wprowadź opis zdjęcia tutaj


Aktualizacja września 2014 r

Poduszka to bardziej nowoczesny widelec 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
Działa dla mnie 13.04 z Pillow, bez dowiązania symbolicznego.
— Eugene Nagorny

2
też dla mnie działał (14.04 LTS 64-bit, niezmodyfikowany od góry): sudo apt-get build-dep python-imaging sudo apt-get install libjpeg62 libjpeg62-dev
— Peter Teoh

Potrzebowałem tylko „apt-get build-dep python-imaging”
— peterretief 9.04.17

13

Chcę tylko dodać, że pip install piljuż nie działa, przynajmniej na moim komputerze, musisz to zrobić

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


5
Spróbuj pip install Pillowzamiast pip install pill(ten drugi nie istnieje)
— aclark

@Lynob to jest to samo co PIL? i jest obsługiwany przez TkInker?
— 3kstc

@ 3kstc tak, to jest
— Lynob

4

Powyższe odpowiedzi tworzą łącza do bibliotek x64 w lokalizacjach x86. Zamiast tego chciałbym pobrać źródło PIL, a następnie dodać te wiersze w pliku setup.py:

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

po tych liniach (~ linia 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")

zainstaluj ponownie PIL. Jeśli używasz pip:

pip uninstall PIL

Następnie z katalogu źródłowego uruchom:

python setup.py install

2

To rozwiązanie działa dla mnie na Ubuntu 14.04, ponieważ libjpeg nie był dostępny w repozytorium.

Co ostatecznie dla mnie zadziałało

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

2

sudo apt-get install python-imagingteraz instaluje Poduszkę, a nie PIL . Jeśli chodzi o selftest.py, może być konieczne sprawdzenie źródła, aby go uruchomić. I oczywiście musisz zainstalować zależności, jeśli PIL ma je obsługiwać np

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

Aby uruchomić wersję PIL nowszą niż ta zawarta w Ubuntu ::

pip install Pillow

2

Musiałem zainstalować Pipe w wirtualnej wersji 14.04 (nie używając pakietów systemowych).

Aby zbudować poduszkę z PyPI w virtualenv (Python 2.7):

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

... możesz zaimportować PIL .

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.