Ошибка в django-gis
- By admin
- Пн 19 Июль 2010
После перезагрузки рабочего компьютера с windows server 2003 меня порадовала джанга такой ошибкой:
F:\web\realtor\mailTooDatabaseBot>retrieveMail.pyC:\Python26\lib\site-packages\django\contrib\gis\db\backend\__init__.py:6:UserWarning: The `django.contrib.gis.db.backend` module was refactored and to `django.contrib.gis.db.backends` in 1.2. All functionality of `SpatialBackend` has been moved to the `ops` attribute of the spatial database backend. A `SpatialBackend` alias is provided here for backwards-compatibility, but will be removed in 1.3.warn('The `django.contrib.gis.db.backend` module was refactored and 'Traceback (most recent call last):File "F:\web\realtor\mailTooDatabaseBot\retrieveMail.py", line 23, in <module>from arenda.models import Area, Street, Apartment, MatherialFile "F:\web\****\models.py", line 7, in <module>from django.contrib.gis.db import modelsFile "C:\Python26\lib\site-packages\django\contrib\gis\db\models\__init__.py", line 5, in <module>from django.contrib.gis.db.models.aggregates import *File "C:\Python26\lib\site-packages\django\contrib\gis\db\models\aggregates.py", line 2, in <module>from django.contrib.gis.db.models.sql import GeomFieldFile "C:\Python26\lib\site-packages\django\contrib\gis\db\models\sql\__init__.py", line 2, in <module>from django.contrib.gis.db.models.sql.query import GeoQueryFile "C:\Python26\lib\site-packages\django\contrib\gis\db\models\sql\query.py", line 4, in <module>from django.contrib.gis.db.models.fields import GeometryFieldFile "C:\Python26\lib\site-packages\django\contrib\gis\db\models\fields\__init__.py", line 3, in <module>from django.contrib.gis.db.backend import SpatialBackend, gqnImportError: cannot import name gqn
Из-за чего это происходит: в файле django\contrib\gis\db\models\sql\query.py происходит импорт из модуля fields класс GeometryField. Грубо говоря, под модулем можно понимать файл, находящийся в этом же каталоге, так и пакет -- подкаталог, в котором есть файл __init__.py. Что у нас происходило: в каталоге django/contrib/gis/db/models у нас есть файл fields.py и каталог fields. Видимо, приоритет при импорте выше у пакетов, чем у файлов, поэтому загружался ненужный нам (как оказалось устаревший) пакет.
Решилось очень просто: так как каталог fields был оставлен только для совместимости с предыдущими версиями, то его переименовал на fields__temp, ибо вдруг еще пригодится.
UPD: не у одного у меня такая же возникала проблема, решение проблемы такое же http://groups.google.com/group/geodjango/browse_thread/thread/88fc94ed57ab153d