heroku PostGIS syncdb错误

时间:2013-05-28 02:01:24

标签: django heroku postgis geodjango geos

我无法在heroku上运行一个简单的GeoDjango应用程序。我为我的数据库创建了postgis扩展,但是我无法在没有收到以下错误的情况下运行syncdb:

from django.contrib.gis.geometry.backend import Geometry
File "/app/.heroku/python/lib/python2.7/site-packages/django/contrib/gis/geometry/backend/__init__.py", line 14, in <module>
'"%s".' % geom_backend)
django.core.exceptions.ImproperlyConfigured: Could not import user-defined GEOMETRY_BACKEND "geos".

任何想法我做错了什么?也有人知道在heroku上运行一个简单的geodjango项目的教程吗?谢谢你的帮助

3 个答案:

答案 0 :(得分:3)

我遇到了同样的问题而Joe是正确的,你错过了一个buildpack。我做的不同的是包括heroku-geo-buildpack和heroku-buildpack-python。两者都可以通过使用heroku-buildpack-multi并在主目录中添加“.buildpacks”文件来包含其他构建包。

https://github.com/ddollar/heroku-buildpack-multi

所以将buildpack-multi设置为buildpack并在项目基目录中添加.buildpacks文件:

$ heroku config:set BUILDPACK_URL=https://github.com/ddollar/heroku-buildpack-multi.git
$ touch .buildpacks

# .buildpacks
https://github.com/cyberdelia/heroku-geo-buildpack.git#1.0
https://github.com/heroku/heroku-buildpack-python

当您推送它时,Heroku将安装运行python(python,pip等)所需的软件包,以及运行postgis(geos,proj和gdal)所需的软件包。

我试试了heroku-buildpack-geodjango,但我相信它可能已经过时了(一年内没有更新)。

答案 1 :(得分:2)

我在使用ddollar https://github.com/ddollar/heroku-buildpack-multi的多buildpack方法之后遇到了完全相同的错误,直到今天早上才出现问题。正如Jeff所写,你只需将你的buildpack指向multi,然后添加一个.buildpacks文件。

$ heroku config:set BUILDPACK_URL=https://github.com/ddollar/heroku-buildpack-multi.git
$ cat .buildpacks

# .buildpacks
https://github.com/cyberdelia/heroku-geo-buildpack.git
https://github.com/heroku/heroku-buildpack-python

另外不要忘记将django.contrib.gis添加到设置中的应用程序。

当你推送到heroku时,一切都应该顺利并安装geos和gdal库但是你会发现django没有找到它们而你得到了错误。这是因为django想要按照文档的完整路径:

https://docs.djangoproject.com/en/dev/ref/contrib/gis/install/geolibs/

所以将此添加到settings.py:

GEOS_LIBRARY_PATH = "{}/libgeos_c.so".format(environ.get('GEOS_LIBRARY_PATH'))
GDAL_LIBRARY_PATH = "{}/libgdal.so".format(environ.get('GDAL_LIBRARY_PATH'))

答案 2 :(得分:1)

好像你缺少一些C库。考虑一下GeoDjango Heroku buildpack:

https://github.com/cirlabs/heroku-buildpack-geodjango/

heroku create --stack cedar --buildpack http://github.com/cirlabs/heroku-buildpack-geodjango/
git push heroku master

应使用这些命令自动安装所需的库。

相关问题