Установка GeoDjango

Быстрый обзор

В общем, для установки GeoDjango требуется:

  1. Python and Django
  2. Пространственная база данных
  3. Установка геопространственных библиотек

Подробная информация по каждому из требований и инструкции по установке приведены в разделах ниже. Кроме того, имеются инструкции для конкретной платформы:

Используйте источник

Поскольку GeoDjango использует преимущества новейших технологий геопространственного программного обеспечения с открытым исходным кодом, необходимы последние версии библиотек. Если бинарные пакеты для вашей платформы недоступны, может потребоваться установка из исходного кода. При компиляции библиотек из исходного кода, пожалуйста, внимательно следуйте инструкциям, особенно если вы новичок.

Требования

Python и Django

Поскольку GeoDjango входит в состав Django, пожалуйста, обратитесь к разделу installation instructions Django для получения подробной информации о том, как установить.

Пространственная база данных

PostgreSQL (с PostGIS), MySQL, Oracle и SQLite (с SpatiaLite) - вот те пространственные базы данных, которые поддерживаются в настоящее время.

Примечание

Рекомендуется PostGIS, поскольку это наиболее зрелая и многофункциональная пространственная база данных с открытым исходным кодом.

Геопространственные библиотеки, необходимые для установки GeoDjango, зависят от используемой пространственной базы данных. Ниже перечислены требования к библиотекам, поддерживаемые версии и любые примечания для каждого из поддерживаемых бэкендов баз данных:

База данных Требования к библиотеке Поддерживаемые версии Примечания
PostgreSQL GEOS, GDAL, PROJ, PostGIS 12+ Требуется PostGIS.
MySQL ГЕОС, ГДАЛ 8+ Limited functionality.
Oracle ГЕОС, ГДАЛ 19+ XE не поддерживается.
SQLite GEOS, GDAL, PROJ, SpatiaLite 3.21.0+ Требуется SpatiaLite 4.3+

См. также this comparison matrix на OSGeo Wiki о возможных комбинациях PostgreSQL/PostGIS/GEOS/GDAL.

Установка

Геопространственные библиотеки

Установка базы данных

DATABASES конфигурация

Установите настройку ENGINE в одно из значений spatial backends.

Добавьте django.contrib.gis к INSTALLED_APPS

Как и в других приложениях Django contrib, вам только нужно добавить django.contrib.gis к INSTALLED_APPS в настройках. Это необходимо для того, чтобы шаблоны gis могли быть расположены - если этого не сделать, то такие функции, как географическая админка или KML карты сайта не будут работать должным образом.

Устранение неполадок

Если вы не можете найти решение своей проблемы здесь, тогда участвуйте в сообществе! Вы можете:

  • Присоединяйтесь к IRC-каналу #django-geo на Libera.Chat. Пожалуйста, будьте терпеливы и вежливы - хотя вы можете не получить немедленного ответа, кто-нибудь постарается ответить на ваш вопрос, как только увидит его.
  • Задайте свой вопрос на форуме 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 добавьте путь к пользовательской библиотеке (например, /usr/local/lib) на новой строке в ld.so.conf. Это один пример того, как это можно сделать:

$ 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 использует программу под названием objdump (часть пакета binutils) для проверки общей библиотеки в системах GNU/Linux. Таким образом, если binutils не установлен на вашей системе Linux, то ctypes Python может не найти вашу библиотеку, даже если путь к библиотеке установлен правильно и геопространственные библиотеки были собраны идеально.

Пакет binutils может быть установлен на системах Debian и Ubuntu с помощью следующей команды:

$ sudo apt-get install binutils

Аналогично, в системах Red Hat и CentOS:

$ sudo yum install binutils

Инструкции для конкретной платформы

macOS

Из-за разнообразия систем упаковки, доступных для macOS, у пользователей есть несколько различных вариантов установки GeoDjango. Эти варианты следующие:

Этот раздел также содержит инструкции по установке обновленной версии Python из пакетов, предоставленных Python Software Foundation, однако это не обязательно.

Python

Хотя macOS поставляется с установленным Python, пользователи могут использовать программу framework installers, предоставляемую Python Software Foundation. Преимущество использования программы установки заключается в том, что Python в macOS останется «нетронутым» для внутреннего использования в операционной системе.

Примечание

Необходимо изменить переменную окружения PATH в файле .profile таким образом, чтобы при вводе python в командной строке использовалась новая версия Python:

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

Postgres.app

Postgres.app - это отдельный сервер PostgreSQL, включающий расширение PostGIS. Вам также потребуется установить gdal и libgeoip с Homebrew.

После установки Postgres.app добавьте следующее в .bash_profile, чтобы вы могли запускать программы пакета из командной строки. Замените X.Y на версию PostgreSQL в установленном вами Postgres.app:

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

Вы можете проверить, правильно ли установлен путь, набрав which psql в приглашении терминала.

Homebrew

Homebrew предоставляет «рецепты» для сборки двоичных файлов и пакетов из исходных текстов. Он предоставляет рецепты для необходимых условий GeoDjango на компьютерах Macintosh под управлением macOS. Поскольку Homebrew по-прежнему собирает программное обеспечение из исходных текстов, требуется Xcode.

Резюме:

$ brew install postgresql
$ brew install postgis
$ brew install gdal
$ brew install libgeoip
Финк

Kurt Schwehr был достаточно любезен, чтобы создать пакеты GeoDjango для пользователей системы пакетов Fink. Different packages are available (начиная с django-gis), в зависимости от того, какую версию Python вы хотите использовать.

MacPorts

MacPorts можно использовать для установки предварительных условий GeoDjango на компьютерах под управлением macOS. Поскольку MacPorts по-прежнему собирает программное обеспечение из исходных текстов, требуется Xcode.

Резюме:

$ sudo port install postgresql13-server
$ sudo port install geos
$ sudo port install proj6
$ sudo port install postgis3
$ sudo port install gdal
$ sudo port install libgeoip

Примечание

Вам также придется изменить PATH в вашем .profile, чтобы программы MacPorts были доступны из командной строки:

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

Кроме того, добавьте параметр DYLD_FALLBACK_LIBRARY_PATH, чтобы библиотеки могли быть найдены Python:

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

Windows

Чтобы установить GeoDjango на Windows, последовательно пройдите следующие разделы. В этом руководстве мы установим 64-битные версии каждого приложения.

Python

Установите 64-битную версию Python. Дополнительную информацию см. в разделе Install Python.

PostgreSQL

Загрузите последнюю версию PostgreSQL 15.x installer с сайта EnterpriseDB. После загрузки запустите программу установки, следуйте инструкциям на экране и сохраняйте параметры по умолчанию, если не знаете последствий их изменения.

Примечание

Программа установки PostgreSQL создает нового суперпользователя базы данных postgres Вам будет предложено один раз задать пароль - обязательно запомните его!

Когда программа установки завершится, она спросит «Запустить Stack Builder при выходе?». – проверьте это, так как это необходимо для установки ПостГИС.

Примечание

При успешной установке сервер PostgreSQL будет запускаться в фоновом режиме при каждом запуске системы в качестве службы Windows. Будет создана группа PostgreSQL 15 меню Пуск, содержащая ярлыки для конструктора стека приложений (ASB), а также „SQL Shell“, которая запускает командное окно psql.

ПостГИС

В программе Stack Builder (для запуска вне программы установки, Start ‣ PostgreSQL 15 ‣ Application Stack Builder) выберите PostgreSQL 15 (x64) on port 5432 из выпадающего меню и нажмите кнопку next. Разверните дерево меню Categories ‣ Spatial Extensions и выберите PostGIS X.Y for PostgreSQL 15.

После нажатия кнопки next появится запрос на подтверждение выбранного пакета и «Download directory». Снова нажмите кнопку next, в результате чего будет загружен PostGIS, и вам будет предложено нажать кнопку next для запуска программы установки PostGIS. Во время установки выберите опции по умолчанию. Процесс установки включает четыре диалоговых окна «Да/Нет», для всех четырех вариантов по умолчанию выбран вариант «Нет».

OSGeo4W

Символ OSGeo4W installer помогает установить библиотеки PROJ, GDAL и GEOS, необходимые для работы GeoDjango. Сначала загрузите OSGeo4W installer и запустите его. Выберите Express Web-GIS Install и нажмите кнопку next. В списке „Select Packages“ убедитесь, что выбран GDAL. Если какие-либо другие пакеты включены по умолчанию, то они не требуются GeoDjango и их можно смело снять. После нажатия кнопки next и принятия лицензионных соглашений пакеты будут автоматически загружены и установлены, после чего вы можете выйти из программы установки.

Изменение среды Windows

Чтобы использовать GeoDjango, вам необходимо добавить каталоги OSGeo4W в систему Windows Path, а также создать переменные окружения GDAL_DATA и PROJ_LIB. Следующий набор команд, исполняемый с помощью cmd.exe, настроит все это. После этого перезагрузите устройство, чтобы новые переменные окружения были распознаны:

set OSGEO4W_ROOT=C:\OSGeo4W
set GDAL_DATA=%OSGEO4W_ROOT%\apps\gdal\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%"

Примечание

Для выполнения этих команд необходимы привилегии администратора. Для этого запустите командную строку от имени администратора и введите приведенные выше команды. Чтобы настройки вступили в силу, необходимо выйти из системы и снова войти в нее.

Примечание

Если вы изменили каталоги установки OSGeo4W, то вам необходимо соответствующим образом изменить переменные OSGEO4W_ROOT.

Установите Django и настройте базу данных

Install Django в вашей системе. Рекомендуется создавать virtual environment для каждого создаваемого проекта.

psycopg

Модуль psycopg Python обеспечивает интерфейс между Python и базой данных PostgreSQL. Модуль psycopg может быть установлен с помощью программы pip в виртуальной среде Python:

...\> py -m pip install psycopg

Сноски

[1]GeoDjango использует процедуру find_library() из ctypes.util для поиска разделяемых библиотек.
Вернуться на верх