App Engine: ImportError: нет модуля с именем _gdal - PullRequest
0 голосов
/ 19 ноября 2018

Как включить библиотеку Python 2.7, например, GDAL, в стандарте Google App Engine? В настоящее время Python-модули Linux находятся в папке lib в движке приложения, но при попытке запустить код через конечные точки движок приложения выдает внутреннюю ошибку сервера: ImportError: Нет модуля с именем _gdal. Я использую версию 2.2.3.3. Должен ли libgdal (требуемый для pygdal) быть установлен также на движке приложения, и если да, то как это сделать? Я установил GDAL локально в папку lib (используя ubuntu bash на windows10), следуя этим инструкциям, используя этот синтаксис: sudo pip install --target lib --requirement requirements.txt --ignore-installed как говорится здесь . Пожалуйста, помогите!

Ответы [ 3 ]

0 голосов
/ 19 ноября 2018

С Какой компилятор я могу использовать для сборки GDAL / OGR?

GDAL / OGR написан на ANSI C и C ++. Он может быть скомпилирован с всеми современными компиляторами C / C ++ .

Это означает, что он несовместим со стандартной средой (1-го поколения / python 2.7) Pure Python требование к песочнице:

Весь код для среды выполнения Python должен быть чисто Python, и не включать расширения C или другой код, который должен быть скомпилирован.

Вы можете вместо этого взглянуть на гибкую среду. Вероятно, с пользовательской средой выполнения, см. Обновленный пункт с AppEngine Python flex env?

0 голосов
/ 21 ноября 2018

Изменение этого ответа ссылки Мне удалось заставить GDAL работать в App Engine Flexible.Мой 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

Мой 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

needs.text-файл:

pygdal==1.11.3.3
0 голосов
/ 19 ноября 2018

Стандартная среда Google App Engine для Python27 поддерживает только определенный набор сторонних библиотек, использующих расширения C, перечисленных здесь . pygdal нет в списке.

Возможно, вы захотите взглянуть на стандартную среду исполнения Python3, хотя она находится в бета . Позволяет устанавливать произвольные сторонние библиотеки.

...