Comment activer la bibliothèque Python 2.7 comme GDAL dans la norme Google App Engine? Actuellement, il existe des modules python linux dans le dossier lib dans le moteur d'application, mais lorsque vous essayez d'exécuter le code via des points de terminaison, le moteur d'application donne une erreur de serveur interne: ImportError: aucun module nommé _gdal. J'utilise la version 2.2.3.3 de pygdal. La libgdal (demandée pour pygdal) doit-elle également être installée sur le moteur d'application, et si oui, comment le faire? J'ai installé GDAL localement dans le dossier lib (en utilisant ubuntu bash sous windows10) en suivant ces instructions en utilisant cette syntaxe: sudo pip install --target lib --requirement requirements.txt --ignore-installed comme indiqué ici. Veuillez aider!

0
samuq 19 nov. 2018 à 16:25

3 réponses

Meilleure réponse

En modifiant la réponse de cette liens, j'ai réussi à faire fonctionner GDAL dans App Engine Flexible. Mon dockerfile:

FROM gcr.io/google-appengine/python

RUN apt-get update && apt-get -y install libproj-dev libgdal-dev 
RUN export CPLUS_INCLUDE_PATH=/usr/include/gdal
RUN export C_INCLUDE_PATH=/usr/include/gdal
RUN gdal-config --version
# Create a virtualenv for dependencies. This isolates these packages from
# system-level packages.
RUN virtualenv /env -p python2.7

# Setting these environment variables are the same as running
# source /env/bin/activate.
ENV VIRTUAL_ENV /env
ENV PATH /env/bin:$PATH

# Copy the application's requirements.txt and run pip to install all
# dependencies into the virtualenv.
ADD requirements.txt requirements.txt
RUN pip install -r requirements.txt
# Add the application source code.
ADD . /app

CMD gunicorn -t 120 -b :$PORT main:app

Mon fichier app.yaml:

runtime: custom
env: flex
entrypoint: gunicorn -t 120 -b :$PORT main:app
endpoints_api_service:
    name: xxxxx.com
rollout_strategy: managed
beta_settings:
    cloud_sql_instances: project:europe-north1:dbinstance
runtime_config:
    python_version: 2

Requirements.text-file:

pygdal==1.11.3.3
0
samuq 21 nov. 2018 à 14:43

L'environnement standard de Google App Engine pour Python27 ne prend en charge qu'un ensemble spécifique de bibliothèques tierces utilisant des extensions C, répertoriées ici. pygdal n'est pas dans la liste.

Vous voudrez peut-être examiner le runtime standard Python3, bien qu'il soit en beta. Il vous permet d'installer des bibliothèques tierces arbitraires.

1
Andrew F 19 nov. 2018 à 14:36

Depuis Quel compilateur puis-je utiliser pour créer GDAL / OGR?

GDAL / OGR est écrit en ANSI C et C ++. Il peut être compilé avec tous les compilateurs C / C ++ modernes.

Ce qui signifie qu'il est incompatible avec l'environnement standard (1ère génération / python 2.7) Pure Exigence du bac à sable Python:

Tout le code de l'environnement d'exécution Python doit être pur Python et ne pas inclure d'extensions C ou d'autres codes qui doivent être compilés.

Vous voudrez peut-être plutôt examiner l'environnement flexible. Probablement avec un runtime personnalisé, voir Up-to -date pip avec AppEngine Python flex env?

2
Dan Cornilescu 19 nov. 2018 à 14:39