Назад | Перейти на главную страницу

Как заставить GDAL работать с Google GCLOUD

Я получаю указанную ниже ошибку при попытке развернуть свое приложение на движке приложений gcloud. Вся проблема заключается в попытке добавить библиотеку GDAL в мое приложение.

Файл "/opt/python3.7/lib/python3.7/ctypes/init.py", строка 377, в getattr func = self.getitem (name) Файл "/opt/python3.7/lib/python3.7/ ctypes / init.py ", строка 382, ​​в getitem func = self._FuncPtr ((name_or_ordinal, self)) AttributeError: /usr/lib/libgdal.so.1: неопределенный символ: OGR_F_GetFieldAsInteger64

Я следовал всем указаниям, которые мог найти в Интернете. Но вроде ничего не работает. Вот мои файлы app.yml:

runtime: custom

entrypoint: gunicorn -b :8080 app.wsgi
env: flex 

# any environment variables you want to pass to your application.
# accessible through os.environ['VARIABLE_NAME']
env_variables:
 ... 
  
beta_settings:
  cloud_sql_instances: site:asia-northeast2:site-db

handlers:
- url: /.*
  script: auto
  secure: always
manual_scaling: 
  instances: 1

runtime_config:
  python_version: 3 

И Dockerfile:

FROM gcr.io/google-appengine/python
#FROM python:3.7
#FROM python:3.8.0-slim-buster

EXPOSE 8080
ENV PYTHONUNBUFFERED 1

# Install GDAL dependencies
#RUN apt-get update && apt-get install --yes libgdal-dev
RUN apt-get update && apt-get install --reinstall -y \
  #libopenjp2-7 \
  #libopenjp2-7-dev \
  #libgdal-dev \
  binutils \
  gdal-bin \
  python-gdal \
  python3-gdal 


# Update C env vars so compiler can find gdal
#ENV CPLUS_INCLUDE_PATH=/usr/include/gdal
#ENV C_INCLUDE_PATH=/usr/include/gdal
RUN export CPLUS_INCLUDE_PATH=/usr/include/gdal
RUN export C_INCLUDE_PATH=/usr/include/gdal

# Create a virtualenv for dependencies. This isolates these packages from
# system-level packages.
# Use -p python3 or -p python3.7 to select python version. Default is version 2.
RUN virtualenv /env -p python3

# 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 /app/requirements.txt
RUN pip install -r /app/requirements.txt
# Add the application source code.
ADD . /app

# Run a WSGI server to serve the application. gunicorn must be declared as
# a dependency in requirements.txt.
CMD exec gunicorn --bind :$PORT --workers 1 --threads 8 main:app --timeout 0 --preload

Обновить: Как и большинство онлайн-предложений по использованию изображения Python3.8.

FROM python:3.8

Когда я пытаюсь это сделать, я получаю следующую ошибку:

/ bin / sh: 1: virtualenv: not found Команда '/ bin / sh -c virtualenv / env -p python3' вернула ненулевой код: 127 ERROR ERROR: build step 0 "gcr.io/cloud-builders/ docker "не удалось: шаг завершился с ненулевым статусом: 127

Кто-нибудь поможет мне здесь. Что мне нужно сделать, чтобы это заработало?