在Heroku-16堆栈中改变了什么使GDAL在Python中可以卸载?

Jan*_*zny 2 python heroku gdal

我正在尝试Heroku-16堆栈,看起来GDAL升级可能需要更改Python buildpack.

在雪松-14上,我使用的是cyberdelia/heroku-geo-buildpack和heroku自己的python buildpack.

在Heroku-16上使用相同的组合 - 只需更改gdal版本中的需求gdal==2.1.3- 导致构建错误:No such file or directory: 'gdal-config'

我是否需要以构建heroku slug的方式更改某些内容,或者是否需要升级build pack.

任何提示非常感谢.

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/tmp/pip-build-w_oq7nbx/gdal/setup.py", line 339, in <module>
    **extra )
  File "/app/.heroku/python/lib/python3.6/distutils/core.py", line 148, in setup
    dist.run_commands()
  File "/app/.heroku/python/lib/python3.6/distutils/dist.py", line 955, in run_commands
    self.run_command(cmd)
  File "/app/.heroku/python/lib/python3.6/distutils/dist.py", line 974, in run_command
    cmd_obj.run()
  File "/app/.heroku/python/lib/python3.6/site-packages/setuptools/command/egg_info.py", line 280, in run
    self.find_sources()
  File "/app/.heroku/python/lib/python3.6/site-packages/setuptools/command/egg_info.py", line 295, in find_sources
    mm.run()
  File "/app/.heroku/python/lib/python3.6/site-packages/setuptools/command/egg_info.py", line 526, in run
    self.add_defaults()
  File "/app/.heroku/python/lib/python3.6/site-packages/setuptools/command/egg_info.py", line 562, in add_defaults
    sdist.add_defaults(self)
  File "/app/.heroku/python/lib/python3.6/site-packages/setuptools/command/py36compat.py", line 36, in add_defaults
    self._add_defaults_ext()
  File "/app/.heroku/python/lib/python3.6/site-packages/setuptools/command/py36compat.py", line 119, in _add_defaults_ext
    build_ext = self.get_finalized_command('build_ext')
  File "/app/.heroku/python/lib/python3.6/distutils/cmd.py", line 299, in get_finalized_command
    cmd_obj.ensure_finalized()
  File "/app/.heroku/python/lib/python3.6/distutils/cmd.py", line 107, in ensure_finalized
    self.finalize_options()
  File "/tmp/pip-build-w_oq7nbx/gdal/setup.py", line 214, in finalize_options
    self.gdaldir = self.get_gdal_config('prefix')
  File "/tmp/pip-build-w_oq7nbx/gdal/setup.py", line 188, in get_gdal_config
    return fetch_config(option)
  File "/tmp/pip-build-w_oq7nbx/gdal/setup.py", line 135, in fetch_config
    raise gdal_config_error(e)
__main__.gdal_config_error: [Errno 2] No such file or directory: 'gdal-config'
Run Code Online (Sandbox Code Playgroud)

Zac*_*chM 5

  1. Python buildpack方式:1.11.x仅在使用cedar-14堆栈时有效.如果设置环境变量:BUILD_WITH_GEO_LIBRARIES=1Python buildpack知道下载GDAL,GEOS和PROJ.在这种情况下,GeoDjango似乎能够很好地找到库.此方法从S3存储桶下载库和二进制文件,其中包含GDAL版本1.11.5.
  2. 自定义buildpack方式:一个比较流行的支持geo的构建包是https://github.com/cyberdelia/heroku-geo-buildpack.在雪松-14堆栈上,它开箱即用(删除BUILD_WITH_GEO_LIBRARIES,清除Heroku构建器缓存,重新部署).

    heroku-16堆栈上,它没有正确设置GDAL(如下所述),也没有为Django设置环境变量a6f8e24.相反,你可以在https://github.com/dschep/heroku-geo-buildpack的buildpack中使用修复程序(希望它最终会合并).你需要设置GDAL_LIBRARY_PATHGEOS_LIBRARY_PATH在您settings.py(你可以使用os.getenv('GDAL_LIBRARY_PATH')).

延伸阅读:

a6f8e24heroku-16堆栈上运行Python buildpack(或提交cyberdelia/heroku-geo-buildpack buildpack)时,缺少libjasper.so,因此GDAL库将无法成功加载.此外,$PATHPython buildpack中的变量缺少供应商二进制文件,因此gdal-config无法开箱即用.

附录A - 安装的地理库版本:

heroku-16:使用geos版本:3.6.1,使用gdal版本:2.1.3,使用proj版本:4.9.3

cedar-14:使用geos版本:3.4.2,使用gdal版本:1.11.1,使用proj版本:4.8.0_1