首页 > 解决方案 > 无法在 Heroku 上安装 GDAL:缺少头文件

问题描述

我一直在尝试将我的 Django 应用程序部署到 Heroku,但由于连接到 Gdal 的错误,它一直失败。

我在这个过程中遇到了不同的问题,并找到了几个建议,但没有一个奏效。我尝试了一些事情:#

我不断收到有关缺少头文件的错误消息:

Collecting GDAL==3.2.0
  Downloading GDAL-3.2.0.tar.gz (602 kB)
Building wheels for collected packages: GDAL
  Building wheel for GDAL (setup.py): started
  Building wheel for GDAL (setup.py): finished with status 'error'
  ERROR: Command errored out with exit status 1:
   command: /app/.heroku/python/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-nttph3yx/GDAL/setup.py'"'"'; __file__='"'"'/tmp/pip-install-nttph3yx/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-z6r3jxu4
       cwd: /tmp/pip-install-nttph3yx/GDAL/
  Complete output (71 lines):
  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.8
  creating build/lib.linux-x86_64-3.8/osgeo
  copying osgeo/gnm.py -> build/lib.linux-x86_64-3.8/osgeo
  copying osgeo/osr.py -> build/lib.linux-x86_64-3.8/osgeo
  copying osgeo/ogr.py -> build/lib.linux-x86_64-3.8/osgeo
  copying osgeo/gdalnumeric.py -> build/lib.linux-x86_64-3.8/osgeo
  copying osgeo/gdalconst.py -> build/lib.linux-x86_64-3.8/osgeo
  copying osgeo/__init__.py -> build/lib.linux-x86_64-3.8/osgeo
  copying osgeo/gdal.py -> build/lib.linux-x86_64-3.8/osgeo
  copying osgeo/gdal_array.py -> build/lib.linux-x86_64-3.8/osgeo
  creating build/lib.linux-x86_64-3.8/osgeo/utils
  copying osgeo/utils/pct2rgb.py -> build/lib.linux-x86_64-3.8/osgeo/utils
  copying osgeo/utils/gdal_pansharpen.py -> build/lib.linux-x86_64-3.8/osgeo/utils
  copying osgeo/utils/gdalmove.py -> build/lib.linux-x86_64-3.8/osgeo/utils
  copying osgeo/utils/gdal_sieve.py -> build/lib.linux-x86_64-3.8/osgeo/utils
  copying osgeo/utils/gdal_fillnodata.py -> build/lib.linux-x86_64-3.8/osgeo/utils
  copying osgeo/utils/gdalchksum.py -> build/lib.linux-x86_64-3.8/osgeo/utils
  copying osgeo/utils/mkgraticule.py -> build/lib.linux-x86_64-3.8/osgeo/utils
  copying osgeo/utils/gdal_retile.py -> build/lib.linux-x86_64-3.8/osgeo/utils
  copying osgeo/utils/epsg_tr.py -> build/lib.linux-x86_64-3.8/osgeo/utils
  copying osgeo/utils/gdalimport.py -> build/lib.linux-x86_64-3.8/osgeo/utils
  copying osgeo/utils/gdal_proximity.py -> build/lib.linux-x86_64-3.8/osgeo/utils
  copying osgeo/utils/ogrmerge.py -> build/lib.linux-x86_64-3.8/osgeo/utils
  copying osgeo/utils/gdal_auth.py -> build/lib.linux-x86_64-3.8/osgeo/utils
  copying osgeo/utils/esri2wkt.py -> build/lib.linux-x86_64-3.8/osgeo/utils
  copying osgeo/utils/gdal_calc.py -> build/lib.linux-x86_64-3.8/osgeo/utils
  copying osgeo/utils/__init__.py -> build/lib.linux-x86_64-3.8/osgeo/utils
  copying osgeo/utils/gdalcompare.py -> build/lib.linux-x86_64-3.8/osgeo/utils
  copying osgeo/utils/gdalident.py -> build/lib.linux-x86_64-3.8/osgeo/utils
  copying osgeo/utils/gdal2xyz.py -> build/lib.linux-x86_64-3.8/osgeo/utils
  copying osgeo/utils/gcps2wld.py -> build/lib.linux-x86_64-3.8/osgeo/utils
  copying osgeo/utils/gdal_edit.py -> build/lib.linux-x86_64-3.8/osgeo/utils
  copying osgeo/utils/rgb2pct.py -> build/lib.linux-x86_64-3.8/osgeo/utils
  copying osgeo/utils/gdal_merge.py -> build/lib.linux-x86_64-3.8/osgeo/utils
  copying osgeo/utils/gdal_polygonize.py -> build/lib.linux-x86_64-3.8/osgeo/utils
  copying osgeo/utils/gcps2vec.py -> build/lib.linux-x86_64-3.8/osgeo/utils
  /app/.heroku/python/lib/python3.8/site-packages/setuptools/lib2to3_ex.py:39: SetuptoolsDeprecationWarning: 2to3 support is deprecated. If the project still requires Python 2 support, please migrate to a single-codebase solution or employ an independent conversion process.
    warnings.warn(
  Fixing build/lib.linux-x86_64-3.8/osgeo/gnm.py build/lib.linux-x86_64-3.8/osgeo/osr.py build/lib.linux-x86_64-3.8/osgeo/ogr.py build/lib.linux-x86_64-3.8/osgeo/gdalnumeric.py build/lib.linux-x86_64-3.8/osgeo/gdalconst.py build/lib.linux-x86_64-3.8/osgeo/__init__.py build/lib.linux-x86_64-3.8/osgeo/gdal.py build/lib.linux-x86_64-3.8/osgeo/gdal_array.py build/lib.linux-x86_64-3.8/osgeo/utils/pct2rgb.py build/lib.linux-x86_64-3.8/osgeo/utils/gdal_pansharpen.py build/lib.linux-x86_64-3.8/osgeo/utils/gdalmove.py build/lib.linux-x86_64-3.8/osgeo/utils/gdal_sieve.py build/lib.linux-x86_64-3.8/osgeo/utils/gdal_fillnodata.py build/lib.linux-x86_64-3.8/osgeo/utils/gdalchksum.py build/lib.linux-x86_64-3.8/osgeo/utils/mkgraticule.py build/lib.linux-x86_64-3.8/osgeo/utils/gdal_retile.py build/lib.linux-x86_64-3.8/osgeo/utils/epsg_tr.py build/lib.linux-x86_64-3.8/osgeo/utils/gdalimport.py build/lib.linux-x86_64-3.8/osgeo/utils/gdal_proximity.py build/lib.linux-x86_64-3.8/osgeo/utils/ogrmerge.py build/lib.linux-x86_64-3.8/osgeo/utils/gdal_auth.py build/lib.linux-x86_64-3.8/osgeo/utils/esri2wkt.py build/lib.linux-x86_64-3.8/osgeo/utils/gdal_calc.py build/lib.linux-x86_64-3.8/osgeo/utils/__init__.py build/lib.linux-x86_64-3.8/osgeo/utils/gdalcompare.py build/lib.linux-x86_64-3.8/osgeo/utils/gdalident.py build/lib.linux-x86_64-3.8/osgeo/utils/gdal2xyz.py build/lib.linux-x86_64-3.8/osgeo/utils/gcps2wld.py build/lib.linux-x86_64-3.8/osgeo/utils/gdal_edit.py build/lib.linux-x86_64-3.8/osgeo/utils/rgb2pct.py build/lib.linux-x86_64-3.8/osgeo/utils/gdal_merge.py build/lib.linux-x86_64-3.8/osgeo/utils/gdal_polygonize.py build/lib.linux-x86_64-3.8/osgeo/utils/gcps2vec.py
  Skipping optional fixer: ws_comma
  Fixing build/lib.linux-x86_64-3.8/osgeo/gnm.py build/lib.linux-x86_64-3.8/osgeo/osr.py build/lib.linux-x86_64-3.8/osgeo/ogr.py build/lib.linux-x86_64-3.8/osgeo/gdalnumeric.py build/lib.linux-x86_64-3.8/osgeo/gdalconst.py build/lib.linux-x86_64-3.8/osgeo/__init__.py build/lib.linux-x86_64-3.8/osgeo/gdal.py build/lib.linux-x86_64-3.8/osgeo/gdal_array.py build/lib.linux-x86_64-3.8/osgeo/utils/pct2rgb.py build/lib.linux-x86_64-3.8/osgeo/utils/gdal_pansharpen.py build/lib.linux-x86_64-3.8/osgeo/utils/gdalmove.py build/lib.linux-x86_64-3.8/osgeo/utils/gdal_sieve.py build/lib.linux-x86_64-3.8/osgeo/utils/gdal_fillnodata.py build/lib.linux-x86_64-3.8/osgeo/utils/gdalchksum.py build/lib.linux-x86_64-3.8/osgeo/utils/mkgraticule.py build/lib.linux-x86_64-3.8/osgeo/utils/gdal_retile.py build/lib.linux-x86_64-3.8/osgeo/utils/epsg_tr.py build/lib.linux-x86_64-3.8/osgeo/utils/gdalimport.py build/lib.linux-x86_64-3.8/osgeo/utils/gdal_proximity.py build/lib.linux-x86_64-3.8/osgeo/utils/ogrmerge.py build/lib.linux-x86_64-3.8/osgeo/utils/gdal_auth.py build/lib.linux-x86_64-3.8/osgeo/utils/esri2wkt.py build/lib.linux-x86_64-3.8/osgeo/utils/gdal_calc.py build/lib.linux-x86_64-3.8/osgeo/utils/__init__.py build/lib.linux-x86_64-3.8/osgeo/utils/gdalcompare.py build/lib.linux-x86_64-3.8/osgeo/utils/gdalident.py build/lib.linux-x86_64-3.8/osgeo/utils/gdal2xyz.py build/lib.linux-x86_64-3.8/osgeo/utils/gcps2wld.py build/lib.linux-x86_64-3.8/osgeo/utils/gdal_edit.py build/lib.linux-x86_64-3.8/osgeo/utils/rgb2pct.py build/lib.linux-x86_64-3.8/osgeo/utils/gdal_merge.py build/lib.linux-x86_64-3.8/osgeo/utils/gdal_polygonize.py build/lib.linux-x86_64-3.8/osgeo/utils/gcps2vec.py
  Skipping optional fixer: ws_comma
  running build_ext
  gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -I../../port -I../../gcore -I../../alg -I../../ogr/ -I../../ogr/ogrsf_frmts -I../../gnm -I../../apps -I/app/.heroku/python/include/python3.8 -I. -I/tmp/tmp.4yGFZUL3To/include -c gdal_python_cxx11_test.cpp -o gdal_python_cxx11_test.o
  gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -I../../port -I../../gcore -I../../alg -I../../ogr/ -I../../ogr/ogrsf_frmts -I../../gnm -I../../apps -I/app/.heroku/python/include/python3.8 -I. -I/tmp/tmp.4yGFZUL3To/include -c gdal_python_cxx11_test.cpp -o gdal_python_cxx11_test.o -std=c++11
  building 'osgeo._gdal' extension
  building 'osgeo._gdalconst' extension
  creating build/temp.linux-x86_64-3.8
  creating build/temp.linux-x86_64-3.8/extensions
  gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -I../../port -I../../gcore -I../../alg -I../../ogr/ -I../../ogr/ogrsf_frmts -I../../gnm -I../../apps -I/app/.heroku/python/include/python3.8 -I. -I/tmp/tmp.4yGFZUL3To/include -c extensions/gdalconst_wrap.c -o build/temp.linux-x86_64-3.8/extensions/gdalconst_wrap.o -I/tmp/tmp.4yGFZUL3To/include
  building 'osgeo._osr' extension
  gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -I../../port -I../../gcore -I../../alg -I../../ogr/ -I../../ogr/ogrsf_frmts -I../../gnm -I../../apps -I/app/.heroku/python/include/python3.8 -I. -I/tmp/tmp.4yGFZUL3To/include -c extensions/osr_wrap.cpp -o build/temp.linux-x86_64-3.8/extensions/osr_wrap.o -I/tmp/tmp.4yGFZUL3To/include
  gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -I../../port -I../../gcore -I../../alg -I../../ogr/ -I../../ogr/ogrsf_frmts -I../../gnm -I../../apps -I/app/.heroku/python/include/python3.8 -I. -I/tmp/tmp.4yGFZUL3To/include -c extensions/gdal_wrap.cpp -o build/temp.linux-x86_64-3.8/extensions/gdal_wrap.o -I/tmp/tmp.4yGFZUL3To/include
  building 'osgeo._ogr' extension
  gcc: error trying to exec 'cc1plus': execvp: No such file or directory
  gcc: error trying to exec 'cc1plus': execvp: No such file or directory
  building 'osgeo._gnm' extension
  gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -I../../port -I../../gcore -I../../alg -I../../ogr/ -I../../ogr/ogrsf_frmts -I../../gnm -I../../apps -I/app/.heroku/python/include/python3.8 -I. -I/tmp/tmp.4yGFZUL3To/include -c extensions/ogr_wrap.cpp -o build/temp.linux-x86_64-3.8/extensions/ogr_wrap.o -I/tmp/tmp.4yGFZUL3To/include
  gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -I../../port -I../../gcore -I../../alg -I../../ogr/ -I../../ogr/ogrsf_frmts -I../../gnm -I../../apps -I/app/.heroku/python/include/python3.8 -I. -I/tmp/tmp.4yGFZUL3To/include -c extensions/gnm_wrap.cpp -o build/temp.linux-x86_64-3.8/extensions/gnm_wrap.o -I/tmp/tmp.4yGFZUL3To/include
  gcc: error trying to exec 'cc1plus': execvp: No such file or directory
  gcc: error trying to exec 'cc1plus': execvp: No such file or directory
  extensions/gdalconst_wrap.c:3018:10: fatal error: gdal.h: No such file or directory
   #include "gdal.h"
            ^~~~~~~~
  compilation terminated.
  error: command 'gcc' failed with exit status 1
  ----------------------------------------
  ERROR: Failed building wheel for GDAL
  Running setup.py clean for GDAL
Failed to build GDAL
Installing collected packages: GDAL
    Running setup.py install for GDAL: started
    Running setup.py install for GDAL: finished with status 'error'
    ERROR: Command errored out with exit status 1:
     command: /app/.heroku/python/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-nttph3yx/GDAL/setup.py'"'"'; __file__='"'"'/tmp/pip-install-nttph3yx/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-p1uoroos/install-record.txt --single-version-externally-managed --compile --install-headers /app/.heroku/python/include/python3.8/GDAL
         cwd: /tmp/pip-install-nttph3yx/GDAL/
    Complete output (72 lines):
    WARNING: numpy not available!  Array support will not be enabled
    running install
    running build
    running build_py
    creating build
    creating build/lib.linux-x86_64-3.8
    creating build/lib.linux-x86_64-3.8/osgeo
    copying osgeo/gnm.py -> build/lib.linux-x86_64-3.8/osgeo
    copying osgeo/osr.py -> build/lib.linux-x86_64-3.8/osgeo
    copying osgeo/ogr.py -> build/lib.linux-x86_64-3.8/osgeo
    copying osgeo/gdalnumeric.py -> build/lib.linux-x86_64-3.8/osgeo
    copying osgeo/gdalconst.py -> build/lib.linux-x86_64-3.8/osgeo
    copying osgeo/__init__.py -> build/lib.linux-x86_64-3.8/osgeo
    copying osgeo/gdal.py -> build/lib.linux-x86_64-3.8/osgeo
    copying osgeo/gdal_array.py -> build/lib.linux-x86_64-3.8/osgeo
    creating build/lib.linux-x86_64-3.8/osgeo/utils
    copying osgeo/utils/pct2rgb.py -> build/lib.linux-x86_64-3.8/osgeo/utils
    copying osgeo/utils/gdal_pansharpen.py -> build/lib.linux-x86_64-3.8/osgeo/utils
    copying osgeo/utils/gdalmove.py -> build/lib.linux-x86_64-3.8/osgeo/utils
    copying osgeo/utils/gdal_sieve.py -> build/lib.linux-x86_64-3.8/osgeo/utils
    copying osgeo/utils/gdal_fillnodata.py -> build/lib.linux-x86_64-3.8/osgeo/utils
    copying osgeo/utils/gdalchksum.py -> build/lib.linux-x86_64-3.8/osgeo/utils
    copying osgeo/utils/mkgraticule.py -> build/lib.linux-x86_64-3.8/osgeo/utils
    copying osgeo/utils/gdal_retile.py -> build/lib.linux-x86_64-3.8/osgeo/utils
    copying osgeo/utils/epsg_tr.py -> build/lib.linux-x86_64-3.8/osgeo/utils
    copying osgeo/utils/gdalimport.py -> build/lib.linux-x86_64-3.8/osgeo/utils
    copying osgeo/utils/gdal_proximity.py -> build/lib.linux-x86_64-3.8/osgeo/utils
    copying osgeo/utils/ogrmerge.py -> build/lib.linux-x86_64-3.8/osgeo/utils
    copying osgeo/utils/gdal_auth.py -> build/lib.linux-x86_64-3.8/osgeo/utils
    copying osgeo/utils/esri2wkt.py -> build/lib.linux-x86_64-3.8/osgeo/utils
    copying osgeo/utils/gdal_calc.py -> build/lib.linux-x86_64-3.8/osgeo/utils
    copying osgeo/utils/__init__.py -> build/lib.linux-x86_64-3.8/osgeo/utils
    copying osgeo/utils/gdalcompare.py -> build/lib.linux-x86_64-3.8/osgeo/utils
    copying osgeo/utils/gdalident.py -> build/lib.linux-x86_64-3.8/osgeo/utils
    copying osgeo/utils/gdal2xyz.py -> build/lib.linux-x86_64-3.8/osgeo/utils
    copying osgeo/utils/gcps2wld.py -> build/lib.linux-x86_64-3.8/osgeo/utils
    copying osgeo/utils/gdal_edit.py -> build/lib.linux-x86_64-3.8/osgeo/utils
    copying osgeo/utils/rgb2pct.py -> build/lib.linux-x86_64-3.8/osgeo/utils
    copying osgeo/utils/gdal_merge.py -> build/lib.linux-x86_64-3.8/osgeo/utils
    copying osgeo/utils/gdal_polygonize.py -> build/lib.linux-x86_64-3.8/osgeo/utils
    copying osgeo/utils/gcps2vec.py -> build/lib.linux-x86_64-3.8/osgeo/utils
    /app/.heroku/python/lib/python3.8/site-packages/setuptools/lib2to3_ex.py:39: SetuptoolsDeprecationWarning: 2to3 support is deprecated. If the project still requires Python 2 support, please migrate to a single-codebase solution or employ an independent conversion process.
      warnings.warn(
    Fixing build/lib.linux-x86_64-3.8/osgeo/gnm.py build/lib.linux-x86_64-3.8/osgeo/osr.py build/lib.linux-x86_64-3.8/osgeo/ogr.py build/lib.linux-x86_64-3.8/osgeo/gdalnumeric.py build/lib.linux-x86_64-3.8/osgeo/gdalconst.py build/lib.linux-x86_64-3.8/osgeo/__init__.py build/lib.linux-x86_64-3.8/osgeo/gdal.py build/lib.linux-x86_64-3.8/osgeo/gdal_array.py build/lib.linux-x86_64-3.8/osgeo/utils/pct2rgb.py build/lib.linux-x86_64-3.8/osgeo/utils/gdal_pansharpen.py build/lib.linux-x86_64-3.8/osgeo/utils/gdalmove.py build/lib.linux-x86_64-3.8/osgeo/utils/gdal_sieve.py build/lib.linux-x86_64-3.8/osgeo/utils/gdal_fillnodata.py build/lib.linux-x86_64-3.8/osgeo/utils/gdalchksum.py build/lib.linux-x86_64-3.8/osgeo/utils/mkgraticule.py build/lib.linux-x86_64-3.8/osgeo/utils/gdal_retile.py build/lib.linux-x86_64-3.8/osgeo/utils/epsg_tr.py build/lib.linux-x86_64-3.8/osgeo/utils/gdalimport.py build/lib.linux-x86_64-3.8/osgeo/utils/gdal_proximity.py build/lib.linux-x86_64-3.8/osgeo/utils/ogrmerge.py build/lib.linux-x86_64-3.8/osgeo/utils/gdal_auth.py build/lib.linux-x86_64-3.8/osgeo/utils/esri2wkt.py build/lib.linux-x86_64-3.8/osgeo/utils/gdal_calc.py build/lib.linux-x86_64-3.8/osgeo/utils/__init__.py build/lib.linux-x86_64-3.8/osgeo/utils/gdalcompare.py build/lib.linux-x86_64-3.8/osgeo/utils/gdalident.py build/lib.linux-x86_64-3.8/osgeo/utils/gdal2xyz.py build/lib.linux-x86_64-3.8/osgeo/utils/gcps2wld.py build/lib.linux-x86_64-3.8/osgeo/utils/gdal_edit.py build/lib.linux-x86_64-3.8/osgeo/utils/rgb2pct.py build/lib.linux-x86_64-3.8/osgeo/utils/gdal_merge.py build/lib.linux-x86_64-3.8/osgeo/utils/gdal_polygonize.py build/lib.linux-x86_64-3.8/osgeo/utils/gcps2vec.py
    Skipping optional fixer: ws_comma
    Fixing build/lib.linux-x86_64-3.8/osgeo/gnm.py build/lib.linux-x86_64-3.8/osgeo/osr.py build/lib.linux-x86_64-3.8/osgeo/ogr.py build/lib.linux-x86_64-3.8/osgeo/gdalnumeric.py build/lib.linux-x86_64-3.8/osgeo/gdalconst.py build/lib.linux-x86_64-3.8/osgeo/__init__.py build/lib.linux-x86_64-3.8/osgeo/gdal.py build/lib.linux-x86_64-3.8/osgeo/gdal_array.py build/lib.linux-x86_64-3.8/osgeo/utils/pct2rgb.py build/lib.linux-x86_64-3.8/osgeo/utils/gdal_pansharpen.py build/lib.linux-x86_64-3.8/osgeo/utils/gdalmove.py build/lib.linux-x86_64-3.8/osgeo/utils/gdal_sieve.py build/lib.linux-x86_64-3.8/osgeo/utils/gdal_fillnodata.py build/lib.linux-x86_64-3.8/osgeo/utils/gdalchksum.py build/lib.linux-x86_64-3.8/osgeo/utils/mkgraticule.py build/lib.linux-x86_64-3.8/osgeo/utils/gdal_retile.py build/lib.linux-x86_64-3.8/osgeo/utils/epsg_tr.py build/lib.linux-x86_64-3.8/osgeo/utils/gdalimport.py build/lib.linux-x86_64-3.8/osgeo/utils/gdal_proximity.py build/lib.linux-x86_64-3.8/osgeo/utils/ogrmerge.py build/lib.linux-x86_64-3.8/osgeo/utils/gdal_auth.py build/lib.linux-x86_64-3.8/osgeo/utils/esri2wkt.py build/lib.linux-x86_64-3.8/osgeo/utils/gdal_calc.py build/lib.linux-x86_64-3.8/osgeo/utils/__init__.py build/lib.linux-x86_64-3.8/osgeo/utils/gdalcompare.py build/lib.linux-x86_64-3.8/osgeo/utils/gdalident.py build/lib.linux-x86_64-3.8/osgeo/utils/gdal2xyz.py build/lib.linux-x86_64-3.8/osgeo/utils/gcps2wld.py build/lib.linux-x86_64-3.8/osgeo/utils/gdal_edit.py build/lib.linux-x86_64-3.8/osgeo/utils/rgb2pct.py build/lib.linux-x86_64-3.8/osgeo/utils/gdal_merge.py build/lib.linux-x86_64-3.8/osgeo/utils/gdal_polygonize.py build/lib.linux-x86_64-3.8/osgeo/utils/gcps2vec.py
    Skipping optional fixer: ws_comma
    running build_ext
    gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -I../../port -I../../gcore -I../../alg -I../../ogr/ -I../../ogr/ogrsf_frmts -I../../gnm -I../../apps -I/app/.heroku/python/include/python3.8 -I. -I/tmp/tmp.4yGFZUL3To/include -c gdal_python_cxx11_test.cpp -o gdal_python_cxx11_test.o
    gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -I../../port -I../../gcore -I../../alg -I../../ogr/ -I../../ogr/ogrsf_frmts -I../../gnm -I../../apps -I/app/.heroku/python/include/python3.8 -I. -I/tmp/tmp.4yGFZUL3To/include -c gdal_python_cxx11_test.cpp -o gdal_python_cxx11_test.o -std=c++11
    building 'osgeo._gdalconst' extension
    building 'osgeo._osr' extension
    creating build/temp.linux-x86_64-3.8
    creating build/temp.linux-x86_64-3.8
    building 'osgeo._gdal' extension
    creating build/temp.linux-x86_64-3.8/extensions
    gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -I../../port -I../../gcore -I../../alg -I../../ogr/ -I../../ogr/ogrsf_frmts -I../../gnm -I../../apps -I/app/.heroku/python/include/python3.8 -I. -I/tmp/tmp.4yGFZUL3To/include -c extensions/gdal_wrap.cpp -o build/temp.linux-x86_64-3.8/extensions/gdal_wrap.o -I/tmp/tmp.4yGFZUL3To/include
    building 'osgeo._ogr' extension
    gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -I../../port -I../../gcore -I../../alg -I../../ogr/ -I../../ogr/ogrsf_frmts -I../../gnm -I../../apps -I/app/.heroku/python/include/python3.8 -I. -I/tmp/tmp.4yGFZUL3To/include -c extensions/ogr_wrap.cpp -o build/temp.linux-x86_64-3.8/extensions/ogr_wrap.o -I/tmp/tmp.4yGFZUL3To/include
    gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -I../../port -I../../gcore -I../../alg -I../../ogr/ -I../../ogr/ogrsf_frmts -I../../gnm -I../../apps -I/app/.heroku/python/include/python3.8 -I. -I/tmp/tmp.4yGFZUL3To/include -c extensions/gdalconst_wrap.c -o build/temp.linux-x86_64-3.8/extensions/gdalconst_wrap.o -I/tmp/tmp.4yGFZUL3To/include
    gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -I../../port -I../../gcore -I../../alg -I../../ogr/ -I../../ogr/ogrsf_frmts -I../../gnm -I../../apps -I/app/.heroku/python/include/python3.8 -I. -I/tmp/tmp.4yGFZUL3To/include -c extensions/osr_wrap.cpp -o build/temp.linux-x86_64-3.8/extensions/osr_wrap.o -I/tmp/tmp.4yGFZUL3To/include
    gcc: error trying to exec 'cc1plus': execvpgcc: : error trying to exec 'cc1plus': execvp: No such file or directory
    No such file or directory
    building 'osgeo._gnm' extension
    gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -I../../port -I../../gcore -I../../alg -I../../ogr/ -I../../ogr/ogrsf_frmts -I../../gnm -I../../apps -I/app/.heroku/python/include/python3.8 -I. -I/tmp/tmp.4yGFZUL3To/include -c extensions/gnm_wrap.cpp -o build/temp.linux-x86_64-3.8/extensions/gnm_wrap.o -I/tmp/tmp.4yGFZUL3To/include
    gcc: error trying to exec 'cc1plus': execvp: No such file or directory
    gcc: error trying to exec 'cc1plus': execvp: No such file or directory
    extensions/gdalconst_wrap.c:3018:10: fatal error: gdal.h: No such file or directory
     #include "gdal.h"
              ^~~~~~~~
    compilation terminated.
    error: command 'gcc' failed with exit status 1
    ----------------------------------------
ERROR: Command errored out with exit status 1: /app/.heroku/python/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-nttph3yx/GDAL/setup.py'"'"'; __file__='"'"'/tmp/pip-install-nttph3yx/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-p1uoroos/install-record.txt --single-version-externally-managed --compile --install-headers /app/.heroku/python/include/python3.8/GDAL Check the logs for full command output.

目前,我正在使用以下设置:

Heroku 构建包:

1. heroku-community/apt
2. https://github.com/heroku/heroku-geo-buildpack.git
3. heroku/python

Heroku 配置:

CPLUS_INCLUDE_PATH:    /usr/include/gdal
C_INCLUDE_PATH:        /usr/include/gdal

文件

gdal-bin
libgdal-dev
libgdal1h
python-gdal
pygdal

档案

release: python artisan/manage.py migrate
release: pip install GDAL==3.2.0
web: gunicorn --pythonpath artisan artisan.wsgi --log-file -

任何指针如何解决这个非常感谢......

标签: pythondjangoherokugdal

解决方案


推荐阅读