GeoDjango 安装 — Django 文档

来自菜鸟教程
Django/docs/3.2.x/ref/contrib/gis/install/index
跳转至:导航、​搜索

GeoDjango 安装

概览

一般来说,GeoDjango 安装需要:

  1. Python 和 Django
  2. 空间数据库
  3. 安装地理空间库

以下各节提供了每个要求和安装说明的详细信息。 此外,平台特定的说明可用于:

使用源

因为 GeoDjango 利用了最新的开源地理空间软件技术,所以需要最新版本的库。 如果二进制包不适用于您的平台,则可能需要从源代码安装。 从源代码编译库时,请严格按照说明进行操作,特别是如果您是初学者。


要求

Python 和 Django

由于GeoDjango 包含在Django 中,详细安装方法请参考Django 的安装说明


空间数据库

目前支持的空间数据库有 PostgreSQL(带有 PostGIS)、MySQL(主要带有 MyISAM 引擎)、Oracle 和 SQLite(带有 SpatiaLite)。

笔记

推荐使用 PostGIS,因为它是最成熟、功能最丰富的开源空间数据库。


GeoDjango 安装所需的地理空间库取决于所使用的空间数据库。 下面列出了每个支持的数据库后端的库要求、支持的版本和任何注意事项:

数据库 图书馆要求 支持的版本 笔记
PostgreSQL GEOS、GDAL、PROJ、PostGIS 9.6+ 需要 PostGIS。
MySQL 地球物理、GDAL 5.7+ 功能有限
甲骨文 地球物理、GDAL 12.2+ 不支持 XE。
SQLite GEOS、GDAL、PROJ、SpatiaLite 3.9.0+ 需要 SpatiaLite 4.3+

另请参阅 OSGeo Wiki 上的 此比较矩阵 ,以了解 PostgreSQL/PostGIS/GEOS/GDAL 可能的组合。


安装

地理空间图书馆

:setting:`DATABASES` 配置

设置 :设置:`引擎 ` 设置为其中之一空间后端 .


将 django.contrib.gis 添加到 :setting:`INSTALLED_APPS`

与其他 Django contrib 应用程序一样,您将 需要在您的设置中将 django.contrib.gis 添加到 :setting:`INSTALLED_APPS`。 这样就可以找到 gis 模板——如果不这样做,地理管理员或 KML 站点地图等功能将无法正常运行。


故障排除

如果您在这里找不到问题的解决方案,请参与社区! 你可以:

  • 加入 Libera.Chat 上的 #django-geo IRC 频道。 请耐心和礼貌——虽然您可能不会立即得到回复,但有人会在他们看到后立即尝试回答您的问题。
  • GeoDjango 论坛上提问。
  • 如果您认为存在错误,请在 Django trac 上提交工单。 确保提供问题的完整描述、使用的版本,并将组件指定为“GIS”。

图书馆环境设置

到目前为止,安装 GeoDjango 时最常见的问题是无法定位外部共享库(例如,用于 GEOS 和 GDAL)。 1 通常,此问题的原因是操作系统不知道从源代码构建的库的安装目录。

通常,可以通过设置环境变量或通过为整个系统配置库路径来基于每个用户设置库路径。

LD_LIBRARY_PATH 环境变量

用户可以设置这个环境变量来自定义他们想要使用的库路径。 从源代码构建的软件的典型库目录是 /usr/local/lib。 因此,/usr/local/lib 需要包含在 LD_LIBRARY_PATH 变量中。 例如,用户可以在他们的 bash 配置文件中放置以下内容:

export LD_LIBRARY_PATH=/usr/local/lib

设置系统库路径

在 GNU/Linux 系统上,通常在 /etc/ld.so.conf 中有一个文件,其中可能包含来自另一个目录中文件的附加路径,例如 /etc/ld.so.conf.d。 作为 root 用户,在 ld.so.conf 的新行中添加自定义库路径(如 /usr/local/lib)。 这是如何执行此操作的 one 示例:

$ sudo echo /usr/local/lib >> /etc/ld.so.conf
$ sudo ldconfig

对于 OpenSolaris 用户,可以使用 crle 实用程序修改系统库路径。 不带选项运行 crle 以查看当前配置并使用 crle -l 设置新的库路径。 修改系统库路径时要非常小心:

# crle -l $OLD_PATH:/usr/local/lib

安装 binutils

GeoDjango 使用 find_library 函数(来自 ctypes.util Python 模块)来发现库。 find_library 例程使用一个名为 objdumpbinutils 包的一部分)的程序来验证 GNU/Linux 系统上的共享库。 因此,如果 binutils 未安装在您的 Linux 系统上,那么即使您的库路径设置正确并且地理空间库已完美构建,Python 的 ctypes 也可能无法找到您的库。

可以使用以下命令在 Debian 和 Ubuntu 系统上安装 binutils 软件包:

$ sudo apt-get install binutils

同样,在 Red Hat 和 CentOS 系统上:

$ sudo yum install binutils

特定于平台的说明

macOS

由于适用于 macOS 的打包系统多种多样,用户有多种不同的选项来安装 GeoDjango。 这些选项是:

本节还包括从 Python 软件基金会提供的包中安装 Python 升级版本的说明,但这不是必需的。

蟒蛇

虽然 macOS 安装了 Python,但用户可以使用 Python Software Foundation 提供的 框架安装程序 。 使用安装程序的一个优势是 macOS 的 Python 将保持“原始”供内部操作系统使用。

笔记

您需要修改 .profile 文件中的 PATH 环境变量,以便在命令行输入 python 时使用新版本的 Python:

export PATH=/Library/Frameworks/Python.framework/Versions/Current/bin:$PATH

Postgres.app

Postgres.app 是一个独立的 PostgreSQL 服务器,包括 PostGIS 扩展。 您还需要使用 Homebrew 安装 gdallibgeoip

安装 Postgres.app 后,将以下内容添加到 .bash_profile 中,以便您可以从命令行运行包的程序。 将 X.Y 替换为您安装的 Postgres.app 中的 PostgreSQL 版本:

export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/X.Y/bin

您可以通过在终端提示符下键入 which psql 来检查路径是否设置正确。


家酿

Homebrew 提供了从源代码构建二进制文件和包的“方法”。 它为运行 macOS 的 Macintosh 计算机上的 GeoDjango 先决条件提供了方法。 由于 Homebrew 仍然从源代码构建软件,因此需要 Xcode

概括:

$ brew install postgresql
$ brew install postgis
$ brew install gdal
$ brew install libgeoip

KyngChaos 套餐

William Kyngesburye 提供了许多 地理空间库二进制包 ,它们有助于在 macOS 上安装 GeoDjango,而无需从源代码编译它们。 然而,Xcode 仍然需要编译 Python 数据库适配器 psycopg2(用于 PostGIS)。

笔记

SpatiaLite 用户应在安装软件包后查阅 macOS 特定说明 部分以获取其他说明。


下载框架包:

  • UnixImageIO
  • 项目
  • 地球观测站
  • SQLite3(包括 SpatiaLite 库)
  • GDAL

按照上面列出的顺序安装包,因为 GDAL 和 SQLite 包需要在它们之前列出的包。

之后,您还可以为 PostgreSQL 和 PostGIS 安装 KyngChaos 二进制包。

安装二进制包后,您需要将以下内容添加到 .profile 中,以便能够从命令行运行包程序:

export PATH=/Library/Frameworks/UnixImageIO.framework/Programs:$PATH
export PATH=/Library/Frameworks/PROJ.framework/Programs:$PATH
export PATH=/Library/Frameworks/GEOS.framework/Programs:$PATH
export PATH=/Library/Frameworks/SQLite3.framework/Programs:$PATH
export PATH=/Library/Frameworks/GDAL.framework/Programs:$PATH
export PATH=/usr/local/pgsql/bin:$PATH

psycopg2

如上所述,安装 KyngChaos 二进制文件并修改 PATH 后,可以使用以下命令安装 psycopg2

$ python -m pip install psycopg2

笔记

如果您没有pip,请按照安装说明进行安装。


芬克

Kurt Schwehr 慷慨地为 Fink 包系统的用户创建了 GeoDjango 包。 有不同的包可用(从django-gis开始),取决于你想使用哪个版本的Python。


端口

MacPorts 可用于在运行 macOS 的计算机上安装 GeoDjango 先决条件。 由于 MacPorts 仍然从源代码构建软件,因此需要 Xcode

概括:

$ sudo port install postgresql93-server
$ sudo port install geos
$ sudo port install proj
$ sudo port install postgis
$ sudo port install gdal +geos
$ sudo port install libgeoip

笔记

您还必须修改 .profile 中的 PATH,以便可以从命令行访问 MacPorts 程序:

export PATH=/opt/local/bin:/opt/local/lib/postgresql93/bin

此外,添加 DYLD_FALLBACK_LIBRARY_PATH 设置,以便 Python 可以找到这些库:

export DYLD_FALLBACK_LIBRARY_PATH=/opt/local/lib:/opt/local/lib/postgresql93

窗户

依次执行以下部分以在 Windows 上安装 GeoDjango。 在本教程中,我们将安装每个应用程序的 64 位版本。

蟒蛇

安装 64 位版本的 Python。 有关更多信息,请参阅 安装 Python


PostgreSQL

EnterpriseDB 网站下载最新的 PostgreSQL 12.x 安装程序 。 下载后,运行安装程序,按照屏幕上的说明进行操作,并保留默认选项,除非您知道更改它们的后果。

笔记

PostgreSQL 安装程序会创建一个新的 postgres 数据库超级用户。系统将提示您设置密码 - 请务必记住!


安装程序完成后,它会询问“退出时启动 Stack Builder?” – 保持选中状态,因为需要安装 PostGIS

笔记

如果安装成功,每次系统作为 Windows 服务启动时,PostgreSQL 服务器都会在后台运行。 PostgreSQL 12 开始菜单组将创建并包含应用程序堆栈生成器 (ASB) 和“SQL Shell”的快捷方式,它将启动 psql 命令窗口。


地理信息系统

在 Stack Builder 中(要在安装程序之外运行,Start ‣ PostgreSQL 12 ‣ Application Stack Builder),从下拉菜单中选择端口 5432 上的 PostgreSQL 12 (x64),然后点击下一步。 展开 Categories ‣ Spatial Extensions 菜单树并选择 PostGIS XY for PostgreSQL 12

点击下一步后,会提示确认选择的包和“下载目录”。 再次单击下一步,这将下载 PostGIS,您将被要求单击下一步以开始 PostGIS 安装程序。 在安装过程中选择默认选项。 安装过程包括三个是/否对话框,所有三个的默认选项都是“否”。


OSGeo4W

OSGeo4W 安装程序 有助于安装 GeoDjango 所需的 PROJ、GDAL 和 GEOS 库。 首先,下载 OSGeo4W 安装程序 (64 位),并运行它。 选择Express Web-GIS Install,点击下一步。 在“选择包”列表中,确保选择了 GDAL; MapServer 也默认启用,但 GeoDjango 不需要,可以安全地取消选中。 单击下一步并接受许可协议后,将自动下载并安装软件包,之后您可以退出安装程序。


修改Windows环境

为了使用 GeoDjango,您需要将 OSGeo4W 目录添加到您的 Windows 系统 Path,以及创建 GDAL_DATAPROJ_LIB 环境变量。 下面的命令集,可通过 cmd.exe 执行,将进行设置。 完成后重新启动设备以识别新的环境变量:

set OSGEO4W_ROOT=C:\OSGeo4W64
set GDAL_DATA=%OSGEO4W_ROOT%\share\gdal
set PROJ_LIB=%OSGEO4W_ROOT%\share\proj
set PATH=%PATH%;%OSGEO4W_ROOT%\bin
reg ADD "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path /t REG_EXPAND_SZ /f /d "%PATH%"
reg ADD "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v GDAL_DATA /t REG_EXPAND_SZ /f /d "%GDAL_DATA%"
reg ADD "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v PROJ_LIB /t REG_EXPAND_SZ /f /d "%PROJ_LIB%"

笔记

这假设安装了 64 位版本的 OSGeo4W。 如果您安装了 32 位版本,则需要将第一个命令更改为 set OSGEO4W_ROOT=C:\OSGeo4W


笔记

执行这些命令需要管理员权限。 为此,请以管理员身份运行命令提示符并输入上述命令。 您需要注销并重新登录才能使设置生效。


笔记

如果您自定义了 OSGeo4W 安装目录,则需要相应地修改 OSGEO4W_ROOT 变量。


安装 Django 并设置数据库

在您的系统上安装 Django。 建议您为您创建的每个项目创建一个 虚拟环境


psycopg2

psycopg2 Python 模块提供了 Python 和 PostgreSQL 数据库之间的接口。 psycopg2 可以通过 pip 在你的 Python 虚拟环境中安装:

...\> py -m pip install psycopg2

脚注

1
GeoDjango 使用 ctypes.util 中的 find_library() 例程来定位共享库。