Установка Gdal при ошибке компиляции Alpine - «ошибка: команда« gcc »завершилась с состоянием выхода 1» - PullRequest
1 голос
/ 12 мая 2019

Я пытаюсь установить Gdal в альпийском докере env.Я установил зависимости Gdal, и все прошло нормально

RUN apk add --no-cache gcc build-base /gdal/gdal-dev-2.4.0-r1.apk /gdal/gdal-2.4.0-r1.apk /gdal/geos-3.7.1-r0.apk /gdal/libcrypto1.1-1.1.1b-r1.apk

Затем я выполнил команду "pip install gdal" Она загружает GDAL-3.0.0.tar.gz, но при установке выдает ошибку.

Сокращенные журналы;

Building wheels for collected packages: gdal
  Building wheel for gdal (setup.py) ... error
  ERROR: Complete output from command /usr/local/bin/python -u -c 'import setuptools, tokenize;__file__='"'"'/tmp/pip-install-hlldvrpz/gdal/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /tmp/pip-wheel-dj2y5pji --python-tag cp37:
  ERROR: WARNING: numpy not available!  Array support will not be enabled
  running bdist_wheel
  running build
  running build_py
  creating build
  creating build/lib.linux-x86_64-3.7
  copying gdal.py -> build/lib.linux-x86_64-3.7
  copying ogr.py -> build/lib.linux-x86_64-3.7
...
...
...
running build_ext
  gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -DTHREAD_STACK_SIZE=0x100000 -fPIC -I../../port -I../../gcore -I../../alg -I../../ogr/ -I../../ogr/ogrsf_frmts -I../../gnm -I../../apps -I/usr/local/include/python3.7m -I. -I/usr/include -c gdal_python_cxx11_test.cpp -o gdal_python_cxx11_test.o
  building 'osgeo._gdal' extension
  creating build/temp.linux-x86_64-3.7
  creating build/temp.linux-x86_64-3.7/extensions
  gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -DTHREAD_STACK_SIZE=0x100000 -fPIC -I../../port -I../../gcore -I../../alg -I../../ogr/ -I../../ogr/ogrsf_frmts -I../../gnm -I../../apps -I/usr/local/include/python3.7m -I. -I/usr/include -c extensions/gdal_wrap.cpp -o build/temp.linux-x86_64-3.7/extensions/gdal_wrap.o -I/usr/include
  extensions/gdal_wrap.cpp: In function 'OSRSpatialReferenceShadow* GDALDatasetShadow_GetSpatialRef(GDALDatasetShadow*)':
  extensions/gdal_wrap.cpp:4672:54: error: 'GDALGetSpatialRef' was not declared in this scope
       OGRSpatialReferenceH ref = GDALGetSpatialRef(self);
                                                        ^
  extensions/gdal_wrap.cpp: In function 'void GDALDatasetShadow_SetSpatialRef(GDALDatasetShadow*, OSRSpatialReferenceShadow*)':
  extensions/gdal_wrap.cpp:4681:57: error: 'GDALSetSpatialRef' was not declared in this scope
        GDALSetSpatialRef( self, (OGRSpatialReferenceH)srs );
...
...
  In file included from /usr/local/include/python3.7m/Python.h:147:0,
                   from extensions/gdal_wrap.cpp:173:
  /usr/local/include/python3.7m/abstract.h:489:17: note: declared here
   PyAPI_FUNC(int) PyObject_AsReadBuffer(PyObject *obj,
                   ^~~~~~~~~~~~~~~~~~~~~
  error: command 'gcc' failed with exit status 1
  ----------------------------------------
  ERROR: Failed building wheel for gdal
Running setup.py clean for gdal
...
...
    error: command 'gcc' failed with exit status 1
    ----------------------------------------
ERROR: Command "/usr/local/bin/python -u -c 'import setuptools, tokenize;__file__='"'"'/tmp/pip-install-hlldvrpz/gdal/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-fapa0jlw/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-install-hlldvrpz/gdal/

1 Ответ

1 голос
/ 13 мая 2019

Кажется, что есть конфликт версий GDAL:

  • pip install gdal извлекает архив исходных текстов для GDAL 3.0.0 и пытается собрать его из исходного кода;
  • 2.4.0Устанавливается пакет -r1 gdal-dev, который действительно является последним доступным в репозиториях Alpine ;
  • GDAL 3.0.0 не будет работать против версии 2.4.0-r1 gdal-devзаголовки.

В качестве обходного пути установка модуля GDAL соответствующей версии 2.4.0 может быть успешной:

pip install 'gdal==2.4.0'

...