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项目的教程吗?谢谢你的帮助

4

3 回答 3

3

我遇到了同样的问题,乔是正确的,你缺少一个 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,但我相信它可能已经过时(一年没有更新)。

于 2013-10-30T04:15:57.517 回答
2

在使用来自 ddollar https://github.com/ddollar/heroku-buildpack-multi的 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'))
于 2014-06-05T07:26:54.823 回答
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

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

于 2013-08-25T23:34:17.287 回答