Python GDAL не может найти приложение GDAL в образе докера

Я пытаюсь создать приложение в контейнере докера, который использует библиотеки OSGEO/GDAL в Python, которые являются обертками вокруг программы GDAL. Программа GDAL устанавливается нормально (по крайней мере, Docker сообщает=> CACHED [3/9] RUN apk add --no-cache gdalбез каких-либо ошибок на шаге, который я вижу), однако, когда я добираюсь до шага, на котором pip должен принести библиотеки GDAL Python, он не ищет файлы, которые не существуют, что, вероятно, показывает некоторый первоначальный поиск означает, что он не может найти программу GDAL. Кто-нибудь знает, как решить или обойти это?

      Collecting GDAL~=3.5.1
#11 15.03   Downloading GDAL-3.5.1.tar.gz (752 kB)
#11 15.16      ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 752.4/752.4 KB 7.3 MB/s eta 0:00:00
#11 15.30   Preparing metadata (setup.py): started
#11 15.71   Preparing metadata (setup.py): finished with status 'error'
#11 15.73   error: subprocess-exited-with-error
#11 15.73   
#11 15.73   × python setup.py egg_info did not run successfully.
#11 15.73   │ exit code: 1
#11 15.73   ╰─> [120 lines of output]
#11 15.73       WARNING: numpy not available!  Array support will not be enabled
#11 15.73       running egg_info
#11 15.73       creating /tmp/pip-pip-egg-info-2jyd4zlx/GDAL.egg-info
#11 15.73       writing /tmp/pip-pip-egg-info-2jyd4zlx/GDAL.egg-info/PKG-INFO
#11 15.73       writing dependency_links to /tmp/pip-pip-egg-info-2jyd4zlx/GDAL.egg-info/dependency_links.txt
#11 15.73       writing requirements to /tmp/pip-pip-egg-info-2jyd4zlx/GDAL.egg-info/requires.txt
#11 15.73       writing top-level names to /tmp/pip-pip-egg-info-2jyd4zlx/GDAL.egg-info/top_level.txt
#11 15.73       writing manifest file '/tmp/pip-pip-egg-info-2jyd4zlx/GDAL.egg-info/SOURCES.txt'
#11 15.73       Traceback (most recent call last):
#11 15.73         File "/tmp/pip-install-tjr9j_9m/gdal_6b994752ac484434b194dfc7ccf64728/setup.py", line 105, in fetch_config
#11 15.73           p = subprocess.Popen([command, args], stdout=subprocess.PIPE)
#11 15.73         File "/usr/local/lib/python3.9/subprocess.py", line 951, in __init__
#11 15.73           self._execute_child(args, executable, preexec_fn, close_fds,
#11 15.73         File "/usr/local/lib/python3.9/subprocess.py", line 1821, in _execute_child
#11 15.73           raise child_exception_type(errno_num, err_msg, err_filename)
#11 15.73       FileNotFoundError: [Errno 2] No such file or directory: '../../apps/gdal-config'

Вот мой dockerfile (базовый образ, боюсь, не подлежит обсуждению)

      FROM python:3.9.12-alpine3.15

RUN apk add --no-cache gdal

RUN mkdir -p /usr/src/app/file
WORKDIR /usr/src/app
COPY requirements.txt /usr/src/app/
RUN pip install --no-cache-dir -r requirements.txt
COPY src/ /usr/src/app/src/
COPY main.py /usr/src/app/
CMD ["python", "main.py"]

Требования.txt выглядит следующим образом.

      requests>= 2.25.0
numpy>=1.23.1
pillow>=9.2.0
GDAL~=3.5.1
DateTime~=4.3
bitstring~=3.1.9
behave~=1.2.6

Я не уверен, есть ли способ установить GDAL в определенное место, чтобы python мог найти его при установке своих библиотек GDAL, или если мне нужно дать pip какой-то намек, или если происходит что-то еще. Если кто-то уже работал с этой библиотекой внутри docker-контейнера, заранее спасибо!

0 ответов

Другие вопросы по тегам