troubleshooting Question

Can't import GEOMETRY-BACKEND geos package in geoDjango

Avatar of cshore12
cshore12 asked on
CPythonPostgreSQL
8 Comments1 Solution3965 ViewsLast Modified:
When trying to create a geospatially-enabled table using the python sqlall command, I'm receiving problem that is apparently fairly common:


  File "c:\Python26\lib\site-packages\django\contrib\gis\db\backends\postgis\ope
rations.py", line 8, in <module>
    from django.contrib.gis.geometry.backend import Geometry
  File "c:\Python26\lib\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 GEOME
TRY_BACKEND "geos".

Please note that I'm working in a Windows XP environment.

From what I've read, the most common reason for this issue is the failure of the system to recognize the GEOS library path, which apparently ends at libgeos_c.so.  I've searched for this file on my system, and the closest I could find was libgeos_c-1.dll.  

The available documentation indicates how to correct this for Linux and Unix systems, but not for Windows.  I think I may have to set the GEOS_LIBRARY_PATH system variable, or maybe reconfigure GEOS, but I'm not sure how.

Here's my settings file:

                                                       ************************

# Django settings for osp1a project.

DEBUG = True
TEMPLATE_DEBUG = DEBUG

ADMINS = (
    # ('Your Name', 'your_email@domain.com'),
)

MANAGERS = ADMINS

DATABASES = {
    'default': {
        'ENGINE': 'django.contrib.gis.db.backends.postgis', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
        'NAME': 'rw_vector',                      # Or path to database file if using sqlite3.
        'USER': 'cshore11',                      # Not used with sqlite3.
        'PASSWORD': '',                  # Not used with sqlite3.
        'HOST': '',                      # Set to empty string for localhost. Not used with sqlite3.
        'PORT': '',                      # Set to empty string for default. Not used with sqlite3.
    }
}

# Local time zone for this installation. Choices can be found here:
# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name
# although not all choices may be available on all operating systems.
# On Unix systems, a value of None will cause Django to use the same
# timezone as the operating system.
# If running in a Windows environment this must be set to the same as your
# system time zone.
TIME_ZONE = 'America/Chicago'

# Language code for this installation. All choices can be found here:
# http://www.i18nguy.com/unicode/language-identifiers.html
LANGUAGE_CODE = 'en-us'

SITE_ID = 1

# If you set this to False, Django will make some optimizations so as not
# to load the internationalization machinery.
USE_I18N = True

# If you set this to False, Django will not format dates, numbers and
# calendars according to the current locale
USE_L10N = True

# Absolute path to the directory that holds media.
# Example: "/home/media/media.lawrence.com/"
MEDIA_ROOT = ''

# URL that handles the media served from MEDIA_ROOT. Make sure to use a
# trailing slash if there is a path component (optional in other cases).
# Examples: "http://media.lawrence.com", "http://example.com/media/"
MEDIA_URL = ''

# URL prefix for admin media -- CSS, JavaScript and images. Make sure to use a
# trailing slash.
# Examples: "http://foo.com/media/", "/media/".
ADMIN_MEDIA_PREFIX = '/media/'

# Make this unique, and don't share it with anybody.
SECRET_KEY = '_$82wxh2pq)vn@(esm7h2sz$xlilwsgkyb660l#1yq2bm726&u'

# List of callables that know how to import templates from various sources.
TEMPLATE_LOADERS = (
    'django.template.loaders.filesystem.Loader',
    'django.template.loaders.app_directories.Loader',
#     'django.template.loaders.eggs.Loader',
)

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    #'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    #'django.contrib.messages.middleware.MessageMiddleware',
)

ROOT_URLCONF = 'osp1a.urls'

TEMPLATE_DIRS = (
    # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
    # Always use forward slashes, even on Windows.
    # Don't forget to use absolute paths, not relative paths.
)

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    # Uncomment the next line to enable the admin:
    'django.contrib.admin',
    'django.contrib.gis',
    'osp1a.osp1a_app',
    # Uncomment the next line to enable admin documentation:
    # 'django.contrib.admindocs',
)                      
                                                        ************************

and the models file:

                                                         ************************

from django.contrib.gis.db import models

# Create your models here.

class Read_Write_Vector(models.Model):
    id = models.IntegerField('ID')
    cvr = models.CharField('COVER', max_length=20)

    objects = models.GeoManager()

# Returns the string representation of the model.
    def __unicode__(self):
        return self.name

                                                         ************************

 
ASKER CERTIFIED SOLUTION
cshore12

Our community of experts have been thoroughly vetted for their expertise and industry experience.

Join our community to see this answer!
Unlock 1 Answer and 8 Comments.
Start Free Trial
Learn from the best

Network and collaborate with thousands of CTOs, CISOs, and IT Pros rooting for you and your success.

Andrew Hancock - VMware vExpert
See if this solution works for you by signing up for a 7 day free trial.
Unlock 1 Answer and 8 Comments.
Try for 7 days

”The time we save is the biggest benefit of E-E to our team. What could take multiple guys 2 hours or more each to find is accessed in around 15 minutes on Experts Exchange.

-Mike Kapnisakis, Warner Bros