Instalación de Python Imaging Library (PIL) en Snow Leopard con Python actualizado 2.6.2
-
08-07-2019 - |
Pregunta
Tengo una nueva instalación (comencé con una unidad limpia) de Snow Leopard con las herramientas de desarrollo instaladas durante la instalación de Snow Leopard.
Luego instalé Python 2.6.2, reemplazando el Python 2.6.1 predeterminado de Snow Leopard. Intenté instalar PIL:
easy_install
pip
- descargando fuente y ejecutando
python setup.py build
manualmente.
Todos producen el mismo error (enlace al pip
log: http://drop.io / gi2bgw6 ). He visto que otros han tenido éxito instalando PIL usando el Python 2.6.1 predeterminado de Snow Leopard, así que no estoy seguro de por qué tengo tantos problemas para que funcione con 2.6.2.
Solución
El Python.org Python fue construido con un gcc anterior. Intente usar gcc-4.0 en lugar del valor predeterminado de SL de 4.2:
export CC=/usr/bin/gcc-4.0
Vea un problema similar aquí .
Eso supera el problema stdarg. Luego puede encontrar problemas de compilación posteriores con varias bibliotecas dependientes.
Por cierto, gcc-4.0 y gcc-4.2 se incluyen con Xcode 3 de Snow Leopard, por lo que no se necesitan instalaciones adicionales.
ACTUALIZADO 2011-05: Tenga en cuenta que el nuevo Xcode 4 , lanzado para uso experimental con 10.6 y que se espera que sea estándar con 10.7, ya no incluye soporte PPC, por lo tanto, si instala Xcode 4, Esta sugerencia no funcionará. Las opciones incluyen el uso de los nuevos instaladores Python 2.7.x de 64 bits / 32 bin de python.org o la instalación de un nuevo Python 2.6 y PIL y las diversas librerías de terceros usando MacPorts, Homebrew o Fink.
Otros consejos
El problema con el que me topé fue que PIL se estaba compilando contra la arquitectura PowerPC (-arch ppc).
Haga esto antes de configurar / construir / compilar:
export ARCHFLAGS="-arch i386"
(Asumiendo que estás en i386)
Respuesta modificada
Estos son los pasos que tomé para instalar con éxito PIL en Mac OS X 10.6 (sin usar MacPorts o Fink).
-
Instalar readline
cd ~/src curl -O ftp://ftp.cwru.edu/pub/bash/readline-6.0.tar.gz tar -xvzf readline-6.0.tar.gz cd readline-6.0 ./configure make sudo make install
-
Instalar gbdm
cd ~/src curl -O ftp://mirror.anl.gov/pub/gnu/gdbm/gdbm-1.8.3.tar.gz tar -xvzf gbdm-1.8.3.tar.gz cd gdbm-1.8.3 # Need to modify Makefile.in perl -pi -e 's/BINOWN = bin/BINOWN = root/' Makefile.in perl -pi -e 's/BINGRP = bin/BINGRP = wheel/' Makefile.in ./configure make sudo make install
-
Compile la última versión de Python 2.6.2+ del Mercurial Repo
cd ~/development hg clone http://code.python.org/hg/branches/release2.6-maint/ python-release2.6-maint.hg cd python-release2.6-main.hg ./configure --enable-framework MACOSX_DEPLOYMENT_TARGET=10.6 make sudo make frameworkinstall
Nota : Recibí los siguientes errores después de ejecutar
make
. Sin embargo, continué porque no me preocupaba perder estos módulos y pude instalar PIL con éxito.Failed to find the necessary bits to build these modules: _bsddb dl imageop linuxaudiodev ossaudiodev spwd sunaudiodev To find the necessary bits, look in setup.py in detect_modules() for the module's name. Failed to build these modules: Nav running build_scripts
-
Actualizar .bash_profile para el nuevo Python 2.6.2+ y para virtualenvwrapper
# Set PATH for MacPython 2.6 if Python2.6 is installed if [ -x /Library/Frameworks/Python.framework/Versions/2.6/bin/python2.6 ]; then PATH="/Library/Frameworks/Python.framework/Versions/2.6/bin:${PATH}" export PATH fi # MDR April 23, 2009: Added for virtualenvwrapper if [ -x /Library/Frameworks/Python.framework/Versions/2.6/bin/virtualenvwrapper_bashrc ]; then export WORKON_HOME=$HOME/.virtualenvs export PIP_VIRTUALENV_BASE=$WORKON_HOME source /Library/Frameworks/Python.framework/Versions/2.6/bin/virtualenvwrapper_bashrc fi
-
Instalar easy_install, pip, virtualenv y virtualenvwrapper para Python 2.6.2+
curl -O http://peak.telecommunity.com/dist/ez_setup.py sudo python ez_setup.py sudo easy_install pip sudo easy_install virtualenv sudo easy_install virtualenvwrapper
-
Cree un virtualenv y luego use pip para instalar PIL
mkvirtualenv pil-test cdvirtualenv easy_install pip pip install http://effbot.org/downloads/Imaging-1.1.6.tar.gz
Nota : No pude instalar PIL usando pip install pil
, así que lo instalé desde la URL como se muestra arriba.
Respuesta original
Por lo que puedo ver en su pip-log.txt parece que instaló Python 2.6.2 utilizando la imagen de disco del instalador de Mac de Python.org lanzado el 16 de abril de 2009. ¿Puede confirmar esto?
Desde el registro de pip, gcc falló con el estado de salida 1. El comando ofensivo gcc
de su registro de pip es el siguiente:
gcc -arch ppc -arch i386 -isysroot /Developer/SDKs/MacOSX10.4u.sdk -fno-strict-aliasing -fno-common -dynamic -DNDEBUG -g -O3 -DHAVE_LIBJPEG -DHAVE_LIBZ -I/System/Library/Frameworks/Tcl.framework/Headers -I/System/Library/Frameworks/Tk.framework/Headers -IlibImaging -I/Library/Frameworks/Python.framework/Versions/2.6/include -I/usr/local/include -I/usr/include -I/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6 -c _imaging.c -o build/temp.macosx-10.3-fat-2.6/_imaging.o
Esto parece ser un problema relacionado con Snow Leopard que cambia el valor predeterminado para la bandera -arch de i386
a x86-64
según Ronald Oussoren en Mensaje 92083 de Python Issue 6802 . Hay un parche disponible en Python 2.6.2, pero no se ha integrado en la imagen de disco del instalador de Mac.
Su mejor solución que no involucra MacPorts o Fink probablemente sería compilar e instalar Python desde la rama de lanzamiento 2.6 desde Mercurial Python Repository o el Subversion Python Repository . De acuerdo con Mensaje 92315 de Problema 6802 , Ronald Oussoren arregló esto en Revisión r74686 .
He estado viendo errores similares al usar Python 2.6.2 instalado desde Mac Disk Image al intentar instalar Fabric en virtualenv, por lo que planeo compilar e instalar desde la rama de mantenimiento de la versión 2.6. Si lo desea, lo actualizaré cuando tenga éxito.
10.6 Snow Leopard instala PIL sin la molestia y sin mantener MacPorts :)
Paso 1: Instalar MacPorts
Paso 2: sudo port install py26-pil
Paso 3: mv /opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/* /Library/Python/2.6/site-packages/
Paso 4: desinstalar MacPorts
¿Lo mejor de ambos mundos?
Los siguientes pasos funcionaron para mí:
$ brew install pip
$ export ARCHFLAGS="-arch i386 -arch x86_64"
$ pip install pil
Me parece que el " No existe tal archivo " es conjunción con stdarg.h es el error más interesante. Parece que falta un archivo de encabezado. No sé cómo asegurarme de que esté instalado en OS X, así que esta es solo la mitad de una respuesta, lo siento, pero tal vez te empuja en la dirección correcta.
Tal vez deberías probar pre-construir binarios universales desde el sitio de Pythonmac
http://pythonmac.org/packages/py25-fat/index.html
Estos son para python2.5, con python2.5 incluido (por lo que puede o no ser utilizable para usted), lo he estado usando desde que tuve problemas para usar PIL de autoconstrucción con py2app.
Encontré un método más simple. sudo port install python26 sudo port install python_select
Luego usa python_select establece python26 como predeterminado.
Luego simplemente instale PIL como de costumbre.
Pude instalar PIP con Python de SL usando estas instrucciones:
http://jetfar.com/libjpeg- y-python-imaging-pil-on-snow-leopard /
Resuelto en 2 pasos:
Paso 1: Xcode desinstalado e instalado, sugerido aquí: http: // binarylionstudios .com / blog / 2011/01/30 / error-stdarg.h-no-such-file-or-directory /
para eliminar Xcode correctamente, siga esta respuesta: Cómo eliminar completamente Xcode 4
sudo / Developer / Library / uninstall-devtools --mode = all
usa la instalación Xcode.app después de reiniciar tu mac
Paso 2: después de reinstalar xcode, la instalación falló
no se puede ejecutar gcc-4.2: No existe tal archivo o directorio PIL
para resolver que seguí esta publicación: http: //aravir-rose.blogspot. com / 2011/12 / installation-python-27s-imaging-library.html
¡Buena suerte!
En OS X Lion con XCode actual y sin gcc-4.0, puedo evitar el error stdard.h faltante configurando las siguientes variables de entorno:
export CC = " /usr/bin/llvm-gcc-4.2"
No puedo decir que entiendo por qué esto funciona.
Por cierto, esto también funciona para la horquilla Pillow de PIL.