Heroku GeoDjango问题缺少GDAL(可能还有GEOS)

ner*_*tor 3 python django heroku gdal geodjango

我正在研究GeoDjango应用程序,并使用Heroku(带有Heroku-16堆栈)作为我的平台.

我按照此处的说明进行操作,其中指定了以下内容:

如果您的应用程序需要地理库,则可以获得对少数这些库的实验性支持:

  • GDAL v2.2.1(雪松-14的v1.11.5)
  • Geos v3.6.2(雪松-14的v3.4.2)
  • Proj v4.9.3(雪松-14的v4.8.0)

要使这些库可用于您的应用程序,只需设置BUILD_WITH_GEO_LIBRARIES环境变量:

$ heroku config:set BUILD_WITH_GEO_LIBRARIES=1
Run Code Online (Sandbox Code Playgroud)

在下次构建期间,将下载并安装这些库.在您的Django settings.py中,还添加以下内容:

import dj_database_url
DATABASES['default'] = dj_database_url.config()
DATABASES['default']['ENGINE'] = 
'django.contrib.gis.db.backends.postgis'

GDAL_LIBRARY_PATH = os.getenv('GDAL_LIBRARY_PATH')
GEOS_LIBRARY_PATH = os.getenv('GEOS_LIBRARY_PATH')
Run Code Online (Sandbox Code Playgroud)

这将确保Django可以找到已安装的GEOS库.

我在Heroku中设置了env变量:

图片

但是,我发现在部署时这没有什么不同:

2017-09-23T19:29:55.142378+00:00 app[web.1]:     % '", "'.join(lib_names)
2017-09-23T19:29:55.142414+00:00 app[web.1]: 
django.core.exceptions.ImproperlyConfigured: Could not find the GDAL 
library (tried "gdal", "GDAL", "gdal2.1.0", "gdal2.0.0", "gdal1.11.0", 
"gdal1.10.0", "gdal1.9.0"). Is GDAL installed? If it is, try setting 
GDAL_LIBRARY_PATH in your settings.
Run Code Online (Sandbox Code Playgroud)

这是我的要求.txt:

dj-database-url==0.4.1
Django==1.11.5
gunicorn==19.6.0
psycopg2==2.6.2
pytz==2017.2
whitenoise==3.2
Run Code Online (Sandbox Code Playgroud)

我在这里唯一的异常是我使用的是Django 1.11.5而不是默认的Heroku的Django项目模板,即1.11.1.这是为了解决一个问题,使项目无法正常工作.

Procfile是:

web: gunicorn tagging_tracker_backend.wsgi
Run Code Online (Sandbox Code Playgroud)

runtime.txt是:

python-3.6.2
Run Code Online (Sandbox Code Playgroud)

Github回购就在这个链接上.

ies*_*ban 6

Heroku文档说:

注意:此功能(BUILD_WITH_GEO_LIBRARIES)仅适用于cedar-14.我们正在努力确保它在heroku-16上正常运行.

https://devcenter.heroku.com/articles/python-c-deps#geodjango-application-libraries

为了使用雪松-14:

$ heroku stack:set cedar-14 --app YOUR_APP 
Run Code Online (Sandbox Code Playgroud)