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.