Como instalo a biblioteca de imagens python (PIL)?

35

Como instalo a biblioteca de imagens python (PIL) no Ubuntu?

Eu tentei fazer

sudo apt-get install python-imaging

mas agora, quando executo python selftest.py (um script que recebi de algum lugar no site http://pythonware.com/products/pil/ ), recebo (entre outras mensagens de aviso):

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

De alguma forma eu estraguei o PIL - como faço para corrigir isso?

Talvez o PIL esteja bom, mas esse "selftest.py" não é realmente o programa certo para verificar se o PIL está instalado corretamente - de que outra forma posso saber se o PIL está instalado corretamente ou não?

(Estou usando o Ubuntu 12.04 LTS "Precise Pangolin").

(O que estou tentando fazer é adicionar um gerador de código de barras 2D a algum código python, e todos os geradores de código de barras 2D que pude encontrar escritos em python pareciam usar o PIL).

David Cary
fonte
2
Você pode querer tentar usando o PIL em um aplicativo, não pode ser apenas um problema com selftest.py
Aaron Hill
1
Em 18.04, parece que você acabou de fazer sudo apt-get install python-pilou sudo apt-get install python3-pil.
Shule 31/08/19
^ Definitivamente, sudo apt-get install python-pilapenas funcionou para mim no raspbian.
Alecxe #

Respostas:

25

Algo semelhante aconteceu comigo, eu resolvi assim

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

E tente instalar lá via pip install PIL.

Mais sobre o que pippode ser encontrado aqui . Em resumo, é uma maneira conveniente (e se tornando um padrão) de instalar bibliotecas python.

se continuar falhando, pode ser devido ao PIL pesquisar essas bibliotecas em um caminho diferente.

Acontece que as instalações do APT colocam as bibliotecas em / usr / lib / x86_64-linux-gnu e o PIL irá procurá-las em / usr / lib / . Então você precisa criar links simbólicos para o PIL vê-los.

Tente verificar se existem bibliotecas libjpeg e libz em / usr / lib / x86_64-linux-gnu e faça um link simbólico dessa maneira

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/

Fonte: http://jj.isgeek.net/2011/09/install-pil-with-jpeg-support-on-ubuntu-oneiric-64bits/

Hernantz
fonte
Isso não funcionou para mim no Ubuntu 12.04 64bit.
Gus E
1
se atender às suas necessidades, você pode tentar 'travesseiro'. É uma queda no substituto do PIL.
Hernantz 23/05
7
Sempre que possível, use pillow. É essencialmente PIL, mas realmente mantido.
precisa saber é o seguinte
O pacote zlib1g-dev não está disponível, mas é referido por outro pacote. Isso pode significar que o pacote está ausente, foi obsoleto ou está disponível apenas em outra fonte E: Não foi possível localizar o pacote libjpeg E: Não foi possível localizar o pacote libjpeg-dev E: Não foi possível localizar o pacote libfreetype6-dev E: Package 'zlib1g -dev 'não tem candidato à instalação'
Aalok 22/16/16
O pacote python-imaging no Ubuntu 12.04 LTS está vinculado à biblioteca JPEG, e o changelog menciona quebra de multiarca antes de julho de 2011. Talvez isso selftest.pytenha sido quebrado por isso também, mas isso não afetou necessariamente mais nada.
Josip Rodin
30

A solução acima não funcionou para mim no Ubuntu 12.10, pois o libjpeg não estava disponível no repositório.

O que acabou trabalhando para mim foi:

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

Se você receber o erro "Você deve colocar alguns URIs 'de origem' em seu sources.list", verifique se seu /etc/apt/sources.list possui entradas deb-src que correspondem às suas entradas deb.

Em seguida, você deve vincular os arquivos da localização real no servidor para o local em que o PIL espera.

Versão de 32 bits

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

Versão de 64 bits

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

Finalmente, pip install PIL

Sucesso!

insira a descrição da imagem aqui


Atualização de setembro de 2014

Pillow é um garfo mais moderno da 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
Nick Woodhams
fonte
1
Funciona para mim no 13.04 com Pillow, sem ligação simbólica.
Eugene Nagorny
2
trabalhou para mim também (14.04 LTS 64-bit, sem modificações de cima): sudo apt-get build-dep python-imaging sudo apt-get install libjpeg62 libjpeg62-dev
Peter Teoh
Eu só precisava de "apt-get build-dep python-imaging"
peterretief
13

Eu só quero acrescentar, que pip install pilnão funciona mais, pelo menos na minha máquina, você tem que fazer

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

Lynob
fonte
5
Tente pip install Pillowem vez de pip install pill(este último não existe)
aclark
@ Lynob isso é o mesmo que PIL? e é suportado pelo TkInker?
3kstc
@ 3kstc sim, é #
Lynob 15/06
4

As respostas acima criam links para bibliotecas x64 em locais x86. Em vez disso, eu baixaria a fonte PIL e, em seguida, adicionaria essas linhas em setup.py:

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

após estas linhas (~ linha 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")

reinstale o PIL. Se você estiver usando pip:

pip uninstall PIL

Em seguida, no diretório de origem, execute:

python setup.py install
Salame
fonte
2

Esta solução funciona para mim no Ubuntu 14.04, pois o libjpeg não estava disponível no repositório.

O que acabou trabalhando para mim

sudo apt-get build-dep python-imaging
sudo apt-get install libjpeg62 libjpeg62-dev
sagar soni
fonte
2

sudo apt-get install python-imagingagora instala Pillow não PIL . Quanto a selftest.py, você pode precisar verificar a fonte para executá-la. E, é claro, você precisa instalar as dependências se desejar que o PIL as suporte, por exemplo

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

Para executar uma versão do PIL mais recente que a incluída no Ubuntu:

pip install Pillow
aclark
fonte
2

Eu precisava instalar o Pillow em um virtualenv no 14.04 (sem usar pacotes do sistema).

Para criar travesseiro a partir do PyPI dentro de um virtualenv (Python 2.7):

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

... então você pode importar o PIL .

Corey Goldberg
fonte