GeoDjango设置:ERROR:无法访问文件"$ libdir/postgis-1.5":没有这样的文件或目录

AP2*_*257 8 postgresql geocoding postgis geodjango

更新:以为我已经解决了,但我没有...请看下面.


我正在Mac OSX上安装GeoDjango.我遵循了Mac安装说明,一切顺利,我现在正在为PostGIS创建一个空间数据库模板.

但是,当我尝试加载PostGIS SQL例程时,我得到ERROR: could not access file "$libdir/postgis-1.5": No such file or directory:

postgres$ psql -d template_postgis -f $POSTGIS_SQL_PATH/postgis.sql
psql:/usr/local/pgsql/share/contrib/postgis-1.5/postgis.sql:59: ERROR:  could not access file "$libdir/postgis-1.5": No such file or directory
<snip>
psql:/usr/local/pgsql/share/contrib/postgis-1.5/postgis.sql:7785: ERROR:  type "geometry" does not exist
Run Code Online (Sandbox Code Playgroud)

出了什么问题,我该如何解决?

从postgis IRC找到了这些说明,但我认为我正在运行正确版本的pg_config等:

postgres$ which pg_config
/usr/local/pgsql/bin//pg_config
postgres$ which psql
/usr/local/pgsql/bin//psql
postgres$ pg_config --pkglibdir
/usr/local/pgsql/lib
Run Code Online (Sandbox Code Playgroud)

我从KyngChaos安装了postgres及其PostGIS扩展.如果我查看/usr/local/pgsql/lib,那里有一个文件postgis-1.5.so,所以我不明白为什么它没有找到.

Jep*_*Lam 3

我知道这是一个老问题,但我使用谷歌发现了它,所以其他人也可能会在这里结束。

在我的 Mac OSX macports 安装中,我有两个包含 postgresql .so 文件的文件夹:

/opt/local/lib/postgresql90/
Run Code Online (Sandbox Code Playgroud)

/usr/local/pgsql-9.0/lib/
Run Code Online (Sandbox Code Playgroud)

看来我的安装是在 /opt/local/lib/postgresql90/ 而不是 /usr/local/pgsql-9.0/lib/ 中查找的,因此要安装 pg_trgm,我必须执行以下操作:

sudo ln -s /opt/local/lib/postgresql90/pg_trgm.so /usr/local/pgsql-9.0/lib/
Run Code Online (Sandbox Code Playgroud)

这应该适用于任何不在正确位置的 .so 文件 - 在您的示例中它应该是

sudo ln -s /opt/local/lib/postgresql90/postgis-1.5.so /usr/local/pgsql-9.0/lib/
Run Code Online (Sandbox Code Playgroud)

这也允许我安装 postgis :)