我正在研究一個GeoDjango應用程序,並使用Heroku(與Heroku-16堆棧)作爲我的平臺。Heroku GeoDjango與缺少GDAL(也可能是GEOS)有關的問題
我下面的說明中發現here,其中指定以下內容:
如果應用程序需要地理庫,這些庫的少數實驗支持可供選擇:
- GDAL V2。 2.1(v1.11.5爲雪松-14)
- GEOS v3.6.2(v3.4.2爲雪松-14)
- PROJ v4.9.3(v4.8.0爲雪松-14)
爲了使這些庫提供給您的應用程序,只需將BUILD_WITH_GEO_LIBRARIES環境變量:
$ heroku config:set BUILD_WITH_GEO_LIBRARIES=1
在你下一次構建,這些庫將被下載並安裝。 在你的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')
這將確保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.
這是我的requirements.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
我在這裏唯一的異常是我使用的是Django 1.11.5,而不是Heroku的Django項目模板的默認值是1.11.1。這是爲了解決一個問題,使項目不能正常工作。
Procfile是:
web: gunicorn tagging_tracker_backend.wsgi
runtime.txt是:
python-3.6.2
GitHub的回購是在this鏈接。