---
title: "Installing Geospatial libraries"
version: 2.0
locale: ko
source: https://docs.djangoproject.com/ko/2.0/ref/contrib/gis/install/geolibs/
canonical: https://djangodocs.dev/ko/2.0/ref/contrib/gis/install/geolibs/
---
# Installing Geospatial libraries

GeoDjango uses and/or provides interfaces for the following open source
geospatial libraries:

| Program | Description | Required | Supported Versions |
| --- | --- | --- | --- |
| [GEOS](/ko/2.0/ref/contrib/gis/geos/) | Geometry Engine Open Source | Yes | 3.6, 3.5, 3.4 |
| [PROJ.4](https://github.com/OSGeo/proj.4/wiki/) | Cartographic Projections library | Yes (PostgreSQL and SQLite only) | 4.9, 4.8, 4.7, 4.6, 4.5, 4.4 |
| [GDAL](/ko/2.0/ref/contrib/gis/gdal/) | Geospatial Data Abstraction Library | Yes | 2.2, 2.1, 2.0, 1.11, 1.10, 1.9 |
| [GeoIP](/ko/2.0/ref/contrib/gis/geoip2/) | IP-based geolocation library | No | 2 |
| [PostGIS](https://postgis.net/) | Spatial extensions for PostgreSQL | Yes (PostgreSQL only) | 2.4, 2.3, 2.2, 2.1 |
| [SpatiaLite](https://www.gaia-gis.it/gaia-sins/) | Spatial extensions for SQLite | Yes (SQLite only) | 4.3, 4.2, 4.1, 4.0 |

Note that older or more recent versions of these libraries *may* also work
totally fine with GeoDjango. Your mileage may vary.

> **Changed in Django 1.11**
>
> In older versions, GDAL is required only for SQLite. Now it’s required for
> all databases.

> **Note**
>
> The GeoDjango interfaces to GEOS, GDAL, and GeoIP may be used
> independently of Django.  In other words, no database or settings file
> required – just import them as normal from [`django.contrib.gis`](/ko/2.0/ref/contrib/gis/#module-django.contrib.gis).

On Debian/Ubuntu, you are advised to install the following packages which will
install, directly or by dependency, the required geospatial libraries:

```console
$ sudo apt-get install binutils libproj-dev gdal-bin
```

Optional packages to consider:

- `libgeoip1`: for [GeoIP](/ko/2.0/ref/contrib/gis/geoip2/) support
- `python-gdal` for GDAL’s own Python bindings – includes interfaces for raster manipulation

Please also consult platform-specific instructions if you are on [macOS](/ko/2.0/ref/contrib/gis/install/#macos)
or [Windows](/ko/2.0/ref/contrib/gis/testing/#windows).

## Building from source

When installing from source on UNIX and GNU/Linux systems, please follow
the installation instructions carefully, and install the libraries in the
given order.  If using MySQL or Oracle as the spatial database, only GEOS
is required.

> **Note**
>
> On Linux platforms, it may be necessary to run the `ldconfig` command
> after installing each library. For example:
>
> ```
> $ sudo make install
> $ sudo ldconfig
> ```

> **Note**
>
> macOS users must install [Xcode](https://developer.apple.com/xcode/) in order to compile software from source.

### GEOS

GEOS is a C++ library for performing geometric operations, and is the default
internal geometry representation used by GeoDjango (it’s behind the “lazy”
geometries).  Specifically, the C API library is called (e.g., `libgeos_c.so`)
directly from Python using ctypes.

First, download GEOS 3.4.2 from the GEOS website and untar the source
archive:

```
$ wget http://download.osgeo.org/geos/geos-3.4.2.tar.bz2
$ tar xjf geos-3.4.2.tar.bz2
```

Next, change into the directory where GEOS was unpacked, run the configure
script, compile, and install:

```
$ cd geos-3.4.2
$ ./configure
$ make
$ sudo make install
$ cd ..
```

#### Troubleshooting

##### Can’t find GEOS library

When GeoDjango can’t find GEOS, this error is raised:

```text
ImportError: Could not find the GEOS library (tried "geos_c"). Try setting GEOS_LIBRARY_PATH in your settings.
```

The most common solution is to properly configure your [Library environment settings](/ko/2.0/ref/contrib/gis/install/#libsettings) *or* set
[GEOS\_LIBRARY\_PATH](#geoslibrarypath) in your settings.

If using a binary package of GEOS (e.g., on Ubuntu), you may need to [Install binutils](/ko/2.0/ref/contrib/gis/install/#binutils).

##### `GEOS_LIBRARY_PATH`

If your GEOS library is in a non-standard location, or you don’t want to
modify the system’s library path then the [`GEOS_LIBRARY_PATH`](/ko/2.0/ref/contrib/gis/geos/#std-setting-GEOS_LIBRARY_PATH)
setting may be added to your Django settings file with the full path to the
GEOS C library.  For example:

```
GEOS_LIBRARY_PATH = '/home/bob/local/lib/libgeos_c.so'
```

> **Note**
>
> The setting must be the *full* path to the **C** shared library; in
> other words you want to use `libgeos_c.so`, not `libgeos.so`.

See also [My logs are filled with GEOS-related errors](/ko/2.0/ref/contrib/gis/geos/#geos-exceptions-in-logfile).

### PROJ.4

[PROJ.4](https://github.com/OSGeo/proj.4/wiki/) is a library for converting geospatial data to different coordinate
reference systems.

First, download the PROJ.4 source code and datum shifting files [^1]:

```
$ wget http://download.osgeo.org/proj/proj-4.9.1.tar.gz
$ wget http://download.osgeo.org/proj/proj-datumgrid-1.5.tar.gz
```

Next, untar the source code archive, and extract the datum shifting files in the
`nad` subdirectory.  This must be done *prior* to configuration:

```
$ tar xzf proj-4.9.1.tar.gz
$ cd proj-4.9.1/nad
$ tar xzf ../../proj-datumgrid-1.5.tar.gz
$ cd ..
```

Finally, configure, make and install PROJ.4:

```
$ ./configure
$ make
$ sudo make install
$ cd ..
```

### GDAL

[GDAL](https://trac.osgeo.org/gdal/) is an excellent open source geospatial library that has support for
reading most vector and raster spatial data formats.  Currently, GeoDjango only
supports [GDAL’s vector data](/ko/2.0/ref/contrib/gis/gdal/) capabilities [^2].
[GEOS](#geosbuild) and [PROJ.4](#proj4) should be installed prior to building GDAL.

First download the latest GDAL release version and untar the archive:

```
$ wget http://download.osgeo.org/gdal/1.11.2/gdal-1.11.2.tar.gz
$ tar xzf gdal-1.11.2.tar.gz
$ cd gdal-1.11.2
```

Configure, make and install:

```
$ ./configure
$ make # Go get some coffee, this takes a while.
$ sudo make install
$ cd ..
```

> **Note**
>
> Because GeoDjango has its own Python interface, the preceding instructions
> do not build GDAL’s own Python bindings. The bindings may be built by
> adding the `--with-python` flag when running `configure`. See
> [GDAL/OGR In Python](https://trac.osgeo.org/gdal/wiki/GdalOgrInPython) for more information on GDAL’s bindings.

If you have any problems, please see the troubleshooting section below for
suggestions and solutions.

#### Troubleshooting

##### Can’t find GDAL library

When GeoDjango can’t find the GDAL library, configure your [Library environment settings](/ko/2.0/ref/contrib/gis/install/#libsettings)
*or* set [GDAL\_LIBRARY\_PATH](#gdallibrarypath) in your settings.

##### `GDAL_LIBRARY_PATH`

If your GDAL library is in a non-standard location, or you don’t want to
modify the system’s library path then the [`GDAL_LIBRARY_PATH`](/ko/2.0/ref/contrib/gis/gdal/#std-setting-GDAL_LIBRARY_PATH)
setting may be added to your Django settings file with the full path to
the GDAL library.  For example:

```
GDAL_LIBRARY_PATH = '/home/sue/local/lib/libgdal.so'
```

**Footnotes**

[^1]: The datum shifting files are needed for converting data to and from
certain projections.
For example, the PROJ.4 string for the [Google projection (900913 or 3857)](http://spatialreference.org/ref/sr-org/6864/prj/) requires the
`null` grid file only included in the extra datum shifting files.
It is easier to install the shifting files now, then to have debug a
problem caused by their absence later.

[^2]: Specifically, GeoDjango provides support for the [OGR](http://gdal.org/ogr_arch.html) library, a component of GDAL.
