Heroku PostGIS同步数据库错误

5

我在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项目的教程?感谢您的帮助。


请查看以下链接:http://pragmaticstartup.wordpress.com/2012/09/30/django-core-exceptions-improperlyconfigured-could-not-import-user-defined-geometry_backend-geos/ - karthikr
如果我在本地遇到了这个问题,这可能会有用,但它正在我的Heroku应用程序上发生。 - Jeff Ames
你解决问题了吗? - Павел Тявин
没有,我从未解决这个问题。 - Jeff Ames
@theStreaker123:你还遇到这个问题吗?我在Heroku上也遇到了这个问题。奇怪的是,它曾经可以工作,然后突然就不能工作了。 - dannyroa
@dannyroa 不,我从未解决这个问题,最终也没有使用PostGIS。如果您解决了,请留下答案。 - Jeff Ames
3个回答

3
我遇到了同样的问题,Joe说得对,您缺少一个构建包。我做的不同之处在于同时包含了heroku-geo-buildpack和heroku-buildpack-python,可以使用heroku-buildpack-multi并在主目录中添加".buildpacks"文件来包含两个构建包。 https://github.com/ddollar/heroku-buildpack-multi 因此,请将buildpack-multi设置为您的构建包,并在项目根目录下添加.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,但我认为它可能已经过时了(已经一年没有更新了)。

当我尝试运行heroku run python manage.py migrate时,出现了django.core.exceptions.ImproperlyConfigured: Cannot determine PostGIS version for database "d17s5j1dssat5d4pe". GeoDjango requires at least PostGIS version 1.3. Was the database created from a spatial database template?的错误提示。有任何想法是什么出了问题吗? - psychok7

2
我刚刚在使用 ddollar 的多重构建包方法https://github.com/ddollar/heroku-buildpack-multi时遇到了完全相同的错误,直到今天都没有问题。正如 Jeff 所写的那样,你只需要将你的构建包指向 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 libs,但是您会发现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'))

1
添加库路径对我有用。 - metasequoia

1

看起来你缺少一些C库。考虑使用GeoDjango Heroku构建包:

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

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

这些命令会自动安装所需的库。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接