En el proceso de tratar de escribir un script de Python que usa PIL hoy, descubrí que no parece tenerlo en mi máquina local (OS X 10.5.8, instalación predeterminada de 2.5 Python).¿Cómo configuro un directorio de biblioteca local de python/PYTHONPATH?
Así que corro:
easy_install --prefix=/usr/local/python/ pil
y se queja un poco sobre /usr/local/python/lib/python2.5/site-packages aún no existentes, así lo creo, y vuelva a intentarlo, y obtén esto:
TEST FAILED: /usr/local/python//lib/python2.5/site-packages does NOT support .pth files error: bad install directory or PYTHONPATH
You are attempting to install a package to a directory that is not on PYTHONPATH and which Python does not read ".pth" files from. The installation directory you specified (via --install-dir, --prefix, or the distutils default setting) was:
/usr/local/python//lib/python2.5/site-packages
and your PYTHONPATH environment variable currently contains:
''
OK, es justo: no había hecho nada para establecer el camino. Así que añadir una línea rápida a ~/.bash_profile:
PYTHONPATH="$PYTHONPATH:/usr/local/python/lib/python2.5"
y source
, y vuelve a intentarlo.
Mismo mensaje de error.
Esto es un poco curioso, dado que PYTHONPATH está claramente establecido; Puedo echo $PYTHONPATH
y obtener :/usr/local/python/lib/python2.5
. Me decidí ir a lo que la ruta de inclusión parecía desde el interior:
import sys
print "\n".join(sys.path)
que produce:
/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python25.zip /System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5 /System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/plat-darwin /System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/plat-mac /System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/plat-mac/lib-scriptpackages /System/Library/Frameworks/Python.framework/Versions/2.5/Extras/lib/python /System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/lib-tk /System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/lib-dynload /Library/Python/2.5/site-packages /System/Library/Frameworks/Python.framework/Versions/2.5/Extras/lib/python/PyObjC
de la que /usr/local/python/yadda/yadda
es notablemente desaparecidos.
No estoy seguro de lo que se supone que debo hacer aquí. ¿Cómo hago para que python reconozca esta ubicación como una ruta de inclusión?
ACTUALIZACIÓN
Como sugirió Sven Marnach, estaba descuidando a exportar PYTHONPATH. He corregido ese problema y ahora veo que aparece cuando imprimo sys.path
desde dentro de Python. Sin embargo, todavía tengo el mensaje de error TEST FAILED
que mencioné anteriormente, solo con mi nueva variable de entorno PYTHONPATH.
tanto, he intentado cambiarlo /usr/local/python/lib/python2.5
-/usr/local/python/lib/python2.5/site-packages
, exportar y ejecutar el mismo comando easy_install
nuevo. Esto conduce a un resultado totalmente nuevo que en un principio parecía como el éxito (pero no):
Creating /usr/local/python/lib/python2.5/site-packages/site.py
Searching for pil
Reading http://pypi.python.org/simple/pil/
Reading http://www.pythonware.com/products/pil
Reading http://effbot.org/zone/pil-changes-115.htm
Reading http://effbot.org/downloads/#Imaging
Best match: PIL 1.1.7
Downloading http://effbot.org/media/downloads/PIL-1.1.7.tar.gz
Processing PIL-1.1.7.tar.gz
Running PIL-1.1.7/setup.py -q bdist_egg --dist-dir /var/folders/XW/XWpClVq7EpSB37BV3zTo+++++TI/-Tmp-/easy_install-krj9oR/PIL-1.1.7/egg-dist-tmp--Pyauy
--- using frameworks at /System/Library/Frameworks
[snipped: compiler warnings]
--------------------------------------------------------------------
PIL 1.1.7 SETUP SUMMARY
--------------------------------------------------------------------
version 1.1.7
platform darwin 2.5.1 (r251:54863, Sep 1 2010, 22:03:14)
[GCC 4.0.1 (Apple Inc. build 5465)]
--------------------------------------------------------------------
--- TKINTER support available
--- JPEG support available
--- ZLIB (PNG/ZIP) support available
*** FREETYPE2 support not available
*** LITTLECMS support not available
--------------------------------------------------------------------
To add a missing option, make sure you have the required
library, and set the corresponding ROOT variable in the
setup.py script.
To check the build, run the selftest.py script.
zip_safe flag not set; analyzing archive contents...
Image: module references __file__
No eggs found in /var/folders/XW/XWpClVq7EpSB37BV3zTo+++++TI/-Tmp-/easy_install-krj9oR/PIL-1.1.7/egg-dist-tmp--Pyauy (setup script problem?)
De nuevo, esto se ve bien, pero cuando voy a correr mi script:
Traceback (most recent call last):
File "checkerboard.py", line 1, in import Image, ImageDraw ImportError: No module named Image
Cuando compruebo lo que está ahora bajo /usr/local/python/
usando find .
, me sale:
./lib ./lib/python2.5 ./lib/python2.5/site-packages ./lib/python2.5/site-packages/site.py ./lib/python2.5/site-packages/site.pyc
Así que ... nada módulo de aspecto (estoy asumiendo site.py y site.pyc son metadatos o scripts de ayuda). ¿A dónde fue la instalación?
observo esto:
To check the build, run the selftest.py script.
pero realmente no saben lo que es.
Y también me di cuenta el mensaje "No se encontraron huevos". ¿Alguno de estos consejos?
¿Ha exportado el 'PYTHONPATH'? Simplemente establecerlo como una variable de shell no ayuda. Pruebe 'export PYTHONPATH =" $ PYTHONPATH: /usr/local/python/lib/python2.5 "' y use 'env' para verificar que realmente se haya exportado al entorno. –
Huh. De acuerdo, definitivamente necesito sugerencias para una buena introducción a la comprensión de variables de shell/entorno y comandos como 'env' y' export' y 'source' better. Con mucho gusto recibiré sugerencias. Esto es solo parte del problema, sin embargo ... ahora que he seguido las sugerencias de Sven, la ruta parece ser reconocida en 'sys.path', pero sigo obteniendo el mensaje 'prueba fallida' de fácil instalación . Actualizaré mi pregunta para reflejar esto. –