¿Cómo instalo la biblioteca de imágenes de Python (PIL)?


35

¿Cómo instalo la biblioteca de imágenes de Python (PIL) en Ubuntu?

Intenté hacer

sudo apt-get install python-imaging

pero ahora cuando ejecuto python selftest.py (un script que obtuve de algún lugar en el sitio web http://pythonware.com/products/pil/ ) obtengo (entre otros mensajes de advertencia):

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

¿De alguna manera he estropeado el PIL? ¿Cómo lo soluciono?

Tal vez el PIL esté bien, pero ese "selftest.py" no es realmente el programa correcto para verificar si el PIL está instalado correctamente. ¿De qué otra manera puedo saber si el PIL está instalado correctamente o no?

(Estoy usando Ubuntu 12.04 LTS "Precise Pangolin").

(Lo que finalmente intento hacer es agregar un generador de código de barras 2D a algún código de Python, y todos los generadores de código de barras 2D que pude encontrar que estaban escritos en Python parecían usar el PIL).


2
Es posible que desee intentar usar el PIL en una aplicación, puede haber un problema con selftest.py
Aaron Hill

1
En 18.04 parece que solo haces sudo apt-get install python-pilo sudo apt-get install python3-pil.
Shule

^ Definitivamente, sudo apt-get install python-pilsolo trabajó para mí en raspbian.
alecxe

Respuestas:


25

Algo similar me sucedió, lo resolví de esta manera

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

E intente instalar allí a través de pip install PIL.

Más sobre lo que pipse puede encontrar aquí . En resumen, es una forma conveniente (y se está convirtiendo en estándar) de instalar bibliotecas de Python.

si continúa fallando, puede deberse a que PIL busca esas bibliotecas en una ruta diferente.

Resulta que las instalaciones APT ponen las bibliotecas en / usr / lib / x86_64-linux-gnu y PIL las buscará en / usr / lib / . Por lo tanto, debe crear enlaces simbólicos para que PIL los vea.

Intente ver si existen libjpeg y libz libs en / usr / lib / x86_64-linux-gnu y haga un enlace simbólico de esta manera

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/

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


Esto no funcionó para mí en Ubuntu 12.04 64bit.
Gus E

1
si se ajusta a tus necesidades, puedes probar con la almohada. Es una caída en el reemplazo de PIL.
Hernantz

77
Siempre que sea posible, use pillow. Es esencialmente PIL pero en realidad se mantiene.
Thane Brimhall

El paquete zlib1g-dev no está disponible, pero otro paquete hace referencia a él. Esto puede significar que falta el paquete, ha quedado obsoleto o solo está disponible desde otra fuente E: No se puede encontrar el paquete libjpeg E: No se puede encontrar el paquete libjpeg-dev E: No se puede encontrar el paquete libfreetype6-dev E: Paquete 'zlib1g -dev 'no tiene candidato de instalación
Aalok

El paquete python-imaging en Ubuntu 12.04 LTS está vinculado a la biblioteca JPEG, y el registro de cambios menciona la ruptura multiarch antes de julio de 2011. Quizás esto también selftest.pyse haya roto debido a eso, pero eso no necesariamente afectó a nada más.
Josip Rodin

30

La solución anterior no me funcionó en Ubuntu 12.10 ya que libjpeg no estaba disponible en el repositorio.

Lo que terminó funcionando para mí fue:

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

Si recibe el error "Debe poner algunos URI 'fuente' en su sources.list", asegúrese de que su /etc/apt/sources.list tenga entradas deb-src que coincidan con sus entradas deb.

Luego debe vincular los archivos desde su ubicación real en su servidor a la ubicación donde PIL los espera.

Versión 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

Versión 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

¡Éxito!

ingrese la descripción de la imagen aquí


Actualización de septiembre de 2014

Pillow es una horquilla más moderna de 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
Funciona para mí el 13.04 con Pillow, sin simbología.
Eugene Nagorny

2
también funcionó para mí (14.04 LTS de 64 bits, sin modificar desde arriba): sudo apt-get build-dep python-imaging sudo apt-get install libjpeg62 libjpeg62-dev
Peter Teoh

Solo necesitaba "apt-get build-dep python-imaging"
peterretief

13

Solo quiero agregar, que pip install pilya no funciona, al menos en mi máquina, tienes que hacer

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


55
Intente en pip install Pillowlugar de pip install pill(este último no existe)
aclark

@ Lynob esto es lo mismo que PIL? y es apoyado por TkInker?
3kstc

@ 3kstc sí, lo es
Lynob

4

Las respuestas anteriores crean enlaces para bibliotecas x64 en ubicaciones x86. En su lugar, descargaría la fuente PIL y luego agregaría estas líneas en setup.py:

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

después de estas líneas (~ línea 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")

reinstalar PIL. Si estás usando pip:

pip uninstall PIL

Luego, desde el directorio de origen, ejecute:

python setup.py install

2

Esta solución me funcionó en Ubuntu 14.04 ya que libjpeg no estaba disponible en el repositorio.

¿Qué terminó trabajando para mí?

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

2

sudo apt-get install python-imagingahora instala Pillow no PIL . En cuanto a selftest.py, es posible que deba verificar la fuente para ejecutarlo. Y, por supuesto, debe instalar las dependencias si desea que PIL las soporte, por ejemplo

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

Para ejecutar una versión de PIL más nueva que la incluida en Ubuntu ::

pip install Pillow

2

Necesitaba instalar pip Pillow en un virtualenv el 14.04 (sin usar paquetes del sistema).

Para construir una almohada desde PyPI dentro de un virtualenv (Python 2.7):

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

... entonces puedes importar PIL .

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.