2017-09-23 72 views
1

我正在研究一個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變量:

image

然而,我發現,這是不發揮作用時,它的時間來部署:

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鏈接。

回答