Aquí hay algunas cosas que pueden ayudarle si from PIL import Image
funciona pero import _imaging
falla. Si también falla Image
, consulte Nota al final.
En Ubuntu 13.04 (raring), tuve este problema. Resulta que Ubuntu instala _imaging.so
en un lugar que App Engine no espera: /usr/lib/python2.7/dist-packages
en lugar de /usr/lib/python2.7/dist-packages/PIL
. Entonces _imaging.so
no estaba en ningún lugar en sys.path
.
Aquí hay un par de maneras de evitar esto:
puso a los módulos PIL C en algún lugar ya en el camino:
Noté que /path/to/google_appengine/lib/PIL-1.1.7
fue en sys.path
, pero el directorio no existía en mi instalación . Así que creé el directorio y copié los archivos .so en él, y todo funcionó. Tendría que hacer esto de nuevo, cada vez que actualiza el SDK de App Engine, pero al menos no se mezcla con el código que está desarrollando.
Manipular sys.path en main.py
:
Este código será comprobar si estamos corriendo el servidor de aplicaciones dev, y si es así, añadir el directorio correcto de la vía. No probado pero debería funcionar;)
# Find _imaging.so and put its directory here.
# `locate _imaging.so` or `dpkg -L python-imaging`
PIL_PATH = '/usr/lib/pyshared/python2.7/'
PRODUCTION_MODE = not os.environ.get(
'SERVER_SOFTWARE', 'Development').startswith('Development')
if not PRODUCTION_MODE:
sys.path.insert(PIL_PATH)
supongo que esto podría hacer algo más que los módulos PIL disponibles para usted, por lo que introduciría (aún más) las diferencias entre el desarrollo y la producción. Además, esta técnica implica modificar el código fuente de tu aplicación, lo que parece una mala llamada si hay más de una persona desarrollándola.
Nota: Si import Image
falla, podría haber olvidado de añadir la biblioteca PIL a su app.yaml
.
libraries:
- name: PIL
version: "latest"
Es posible que tenga que reiniciar su dev_appserver.py
después de añadir esta biblioteca para que los cambios se reflejarán en, por ejemplo, la consola interactiva.
Tuve el mismo problema. La instalación limpia de ** PIL 1.1.7 ** (actualmente más reciente) además de la instalación limpia en ** python 2.7.8 ** (actualmente más reciente) corrigió el problema. Asegúrate de que tu pitón 2.7 sea ** de 32 bits **. –