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回购就在这个链接上.
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)
| 归档时间: |
|
| 查看次数: |
977 次 |
| 最近记录: |