#28178 closed Cleanup/optimization (fixed)
Allow applications that make optional use of contrib.gis to better silence the lack of a GDAL install
Reported by: | Bas ten Berge | Owned by: | nobody |
---|---|---|---|
Component: | GIS | Version: | 1.11 |
Severity: | Release blocker | Keywords: | update 1.11.1 |
Cc: | Triage Stage: | Accepted | |
Has patch: | yes | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
I just updated Django 1.11 to 1.11.1 to learn my project would not start without changes to the settings. runserver stops with this message:
django.contrib.gis.gdal.error.GDALException: Could not find the GDAL library (tried "gdal", "GDAL", "gdal1.11.0", "gdal1.10.0", "gdal1.9.0", "gdal1.8.0", "gdal1.7.0"). Try setting GDAL_LIBRARY_PATH in your settings.
My installed apps:
... DJANGO_APPS = ( 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.staticfiles', 'django.contrib.sites', 'django.contrib.humanize', ) THIRD_PARTY_APPS = ( 'allauth', 'mailer', 'taggit', 'allauth.account', 'allauth.socialaccount', 'allauth.socialaccount.providers.google', 'allauth.socialaccount.providers.linkedin_oauth2', 'tastypie', 'avatar', 'reversion', 'oauth2_provider', 'channels', 'compressor', 'debug_toolbar', # django-debug-toolbar ) BROWNPAPERSESSION_APPS = ( 'app', 'invite', 'apporg', 'session', 'topic', ) INSTALLED_APPS = \ DJANGO_APPS + THIRD_PARTY_APPS + BROWNPAPERSESSION_APPS ...
I could find a reference in the docs at https://docs.djangoproject.com/en/1.11/releases/1.11.1/:
Prevented hiding GDAL errors if it’s not installed when using contrib.gis (#28160). (It’s a required dependency as of Django 1.11.)
... but I didn't have the issue when I was running Django 1.11. I did not expect such a dependency change in a minor version update. How can I disable GIS?
Change History (9)
comment:1 by , 8 years ago
comment:2 by , 8 years ago
Sure!
Performing system checks... Unhandled exception in thread started by <function wrapper at 0x5d38230> Traceback (most recent call last): File "/var/www/brownpapersession/dev/env-brownpapersession/local/lib/python2.7/site-packages/django/utils/autoreload.py", line 227, in wrapper fn(*args, **kwargs) File "/var/www/brownpapersession/dev/env-brownpapersession/local/lib/python2.7/site-packages/channels/management/commands/runserver.py", line 47, in inner_run self.check(display_num_errors=True) File "/var/www/brownpapersession/dev/env-brownpapersession/local/lib/python2.7/site-packages/django/core/management/base.py", line 359, in check include_deployment_checks=include_deployment_checks, File "/var/www/brownpapersession/dev/env-brownpapersession/local/lib/python2.7/site-packages/django/core/management/base.py", line 346, in _run_checks return checks.run_checks(**kwargs) File "/var/www/brownpapersession/dev/env-brownpapersession/local/lib/python2.7/site-packages/django/core/checks/registry.py", line 81, in run_checks new_errors = check(app_configs=app_configs) File "/var/www/brownpapersession/dev/env-brownpapersession/local/lib/python2.7/site-packages/django/core/checks/urls.py", line 16, in check_url_config return check_resolver(resolver) File "/var/www/brownpapersession/dev/env-brownpapersession/local/lib/python2.7/site-packages/django/core/checks/urls.py", line 26, in check_resolver return check_method() File "/var/www/brownpapersession/dev/env-brownpapersession/local/lib/python2.7/site-packages/django/urls/resolvers.py", line 254, in check for pattern in self.url_patterns: File "/var/www/brownpapersession/dev/env-brownpapersession/local/lib/python2.7/site-packages/django/utils/functional.py", line 35, in __get__ res = instance.__dict__[self.name] = self.func(instance) File "/var/www/brownpapersession/dev/env-brownpapersession/local/lib/python2.7/site-packages/django/urls/resolvers.py", line 405, in url_patterns patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module) File "/var/www/brownpapersession/dev/env-brownpapersession/local/lib/python2.7/site-packages/django/utils/functional.py", line 35, in __get__ res = instance.__dict__[self.name] = self.func(instance) File "/var/www/brownpapersession/dev/env-brownpapersession/local/lib/python2.7/site-packages/django/urls/resolvers.py", line 398, in urlconf_module return import_module(self.urlconf_name) File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module __import__(name) File "/var/www/brownpapersession/dev/brownpapersession/brownpapersession/urls.py", line 16, in <module> from tastypie.api import Api, NamespacedApi File "/var/www/brownpapersession/dev/env-brownpapersession/local/lib/python2.7/site-packages/tastypie/api.py", line 11, in <module> from tastypie.resources import Resource File "/var/www/brownpapersession/dev/env-brownpapersession/local/lib/python2.7/site-packages/tastypie/resources.py", line 24, in <module> from django.contrib.gis.db.models.fields import GeometryField File "/var/www/brownpapersession/dev/env-brownpapersession/local/lib/python2.7/site-packages/django/contrib/gis/db/models/__init__.py", line 3, in <module> from django.contrib.gis.db.models.aggregates import * # NOQA File "/var/www/brownpapersession/dev/env-brownpapersession/local/lib/python2.7/site-packages/django/contrib/gis/db/models/aggregates.py", line 1, in <module> from django.contrib.gis.db.models.fields import ExtentField File "/var/www/brownpapersession/dev/env-brownpapersession/local/lib/python2.7/site-packages/django/contrib/gis/db/models/fields.py", line 3, in <module> from django.contrib.gis import forms, gdal File "/var/www/brownpapersession/dev/env-brownpapersession/local/lib/python2.7/site-packages/django/contrib/gis/forms/__init__.py", line 3, in <module> from .fields import ( # NOQA File "/var/www/brownpapersession/dev/env-brownpapersession/local/lib/python2.7/site-packages/django/contrib/gis/forms/fields.py", line 4, in <module> from django.contrib.gis.geos import GEOSException, GEOSGeometry File "/var/www/brownpapersession/dev/env-brownpapersession/local/lib/python2.7/site-packages/django/contrib/gis/geos/__init__.py", line 5, in <module> from .collections import ( # NOQA File "/var/www/brownpapersession/dev/env-brownpapersession/local/lib/python2.7/site-packages/django/contrib/gis/geos/collections.py", line 11, in <module> from django.contrib.gis.geos.geometry import GEOSGeometry, LinearGeometryMixin File "/var/www/brownpapersession/dev/env-brownpapersession/local/lib/python2.7/site-packages/django/contrib/gis/geos/geometry.py", line 11, in <module> from django.contrib.gis import gdal File "/var/www/brownpapersession/dev/env-brownpapersession/local/lib/python2.7/site-packages/django/contrib/gis/gdal/__init__.py", line 28, in <module> from django.contrib.gis.gdal.datasource import DataSource File "/var/www/brownpapersession/dev/env-brownpapersession/local/lib/python2.7/site-packages/django/contrib/gis/gdal/datasource.py", line 39, in <module> from django.contrib.gis.gdal.driver import Driver File "/var/www/brownpapersession/dev/env-brownpapersession/local/lib/python2.7/site-packages/django/contrib/gis/gdal/driver.py", line 5, in <module> from django.contrib.gis.gdal.prototypes import ds as vcapi, raster as rcapi File "/var/www/brownpapersession/dev/env-brownpapersession/local/lib/python2.7/site-packages/django/contrib/gis/gdal/prototypes/ds.py", line 9, in <module> from django.contrib.gis.gdal.libgdal import GDAL_VERSION, lgdal File "/var/www/brownpapersession/dev/env-brownpapersession/local/lib/python2.7/site-packages/django/contrib/gis/gdal/libgdal.py", line 44, in <module> 'GDAL_LIBRARY_PATH in your settings.' % '", "'.join(lib_names) django.contrib.gis.gdal.error.GDALException: Could not find the GDAL library (tried "gdal", "GDAL", "gdal1.11.0", "gdal1.10.0", "gdal1.9.0", "gdal1.8.0", "gdal1.7.0"). Try setting GDAL_LIBRARY_PATH in your settings.
comment:4 by , 8 years ago
Component: | Uncategorized → GIS |
---|---|
Severity: | Normal → Release blocker |
Summary: | django.contrib.gis.gdal.error.GDALException after update to Django 1.11.1 → Allow applications that make optional use of contrib.gis to better silence the lack of a GDAL install |
Triage Stage: | Unreviewed → Accepted |
Type: | Uncategorized → Cleanup/optimization |
I would say that tastypie should catch GDALException
, however, that exception isn't importable without GDAL installed! So, we might consider some change to Django to alleviate this -- perhaps ImproperlyConfigured
could be raised here instead of GDALException
.
comment:6 by , 8 years ago
Thanks for working on the issue and your time looking into the issue, as opposed to myself :flushed:
The name ImproperlyConfigured
suggests the option is available as a configuration option. In my understanding, it's not possible to disable (or enable) gis via settings
, as an individual setting. Right?
For anyone else looking into this issue: I changed the except
statement on line 25 of tastypie/resources.py
to get the project running on the Django 1.11.1:
except (ImproperlyConfigured, ImportError, Exception, ): # Exception is a workaround for GDALException
Could've just used Exception
there...
Can you please post the complete traceback so we can see what's importing
django.contrib.gis
?