#23901: Unable to load the SpatiaLite library extension "/usr/local/lib/libspatialite.dylib" -------------------------------------+------------------------------------- Reporter: kenial | Owner: nobody Type: Bug | Status: new Component: Database layer | Version: 1.7 (models, ORM) | Resolution: Severity: Normal | Triage Stage: Keywords: spatialite | Unreviewed Has patch: 1 | Needs documentation: 0 Needs tests: 0 | Patch needs improvement: 0 Easy pickings: 0 | UI/UX: 0 -------------------------------------+------------------------------------- Changes (by kenial):
* needs_better_patch: => 0 * needs_tests: => 0 * needs_docs: => 0 Old description: > Installing libspatialite package with Homebrew on OS X and using > django.contrib.gis.db.backends.spatialite as a database backend, I met > this exception: > > {{{ > Traceback (most recent call last): > File "manage.py", line 14, in <module> > execute_from_command_line(sys.argv) > File "/Users/kenial/.virtualenvs/fp/lib/python2.7/site- > packages/django/core/management/__init__.py", line 385, in > execute_from_command_line > utility.execute() > File "/Users/kenial/.virtualenvs/fp/lib/python2.7/site- > packages/django/core/management/__init__.py", line 377, in execute > self.fetch_command(subcommand).run_from_argv(self.argv) > File "/Users/kenial/.virtualenvs/fp/lib/python2.7/site- > packages/django/core/management/base.py", line 288, in run_from_argv > self.execute(*args, **options.__dict__) > File "/Users/kenial/.virtualenvs/fp/lib/python2.7/site- > packages/django/core/management/base.py", line 338, in execute > output = self.handle(*args, **options) > File "/Users/kenial/.virtualenvs/fp/lib/python2.7/site- > packages/django/core/management/commands/migrate.py", line 63, in handle > executor = MigrationExecutor(connection, > self.migration_progress_callback) > File "/Users/kenial/.virtualenvs/fp/lib/python2.7/site- > packages/django/db/migrations/executor.py", line 17, in __init__ > self.loader = MigrationLoader(self.connection) > File "/Users/kenial/.virtualenvs/fp/lib/python2.7/site- > packages/django/db/migrations/loader.py", line 48, in __init__ > self.build_graph() > File "/Users/kenial/.virtualenvs/fp/lib/python2.7/site- > packages/django/db/migrations/loader.py", line 179, in build_graph > self.applied_migrations = recorder.applied_migrations() > File "/Users/kenial/.virtualenvs/fp/lib/python2.7/site- > packages/django/db/migrations/recorder.py", line 59, in > applied_migrations > self.ensure_schema() > File "/Users/kenial/.virtualenvs/fp/lib/python2.7/site- > packages/django/db/migrations/recorder.py", line 49, in ensure_schema > if self.Migration._meta.db_table in > self.connection.introspection.get_table_list(self.connection.cursor()): > File "/Users/kenial/.virtualenvs/fp/lib/python2.7/site- > packages/django/db/backends/__init__.py", line 165, in cursor > cursor = self.make_debug_cursor(self._cursor()) > File "/Users/kenial/.virtualenvs/fp/lib/python2.7/site- > packages/django/db/backends/__init__.py", line 138, in _cursor > self.ensure_connection() > File "/Users/kenial/.virtualenvs/fp/lib/python2.7/site- > packages/django/db/backends/__init__.py", line 133, in ensure_connection > self.connect() > File "/Users/kenial/.virtualenvs/fp/lib/python2.7/site- > packages/django/db/backends/__init__.py", line 122, in connect > self.connection = self.get_new_connection(conn_params) > File "/Users/kenial/.virtualenvs/fp/lib/python2.7/site- > packages/django/contrib/gis/db/backends/spatialite/base.py", line 65, in > get_new_connection > six.reraise(ImproperlyConfigured, ImproperlyConfigured(new_msg), > sys.exc_info()[2]) > File "/Users/kenial/.virtualenvs/fp/lib/python2.7/site- > packages/django/contrib/gis/db/backends/spatialite/base.py", line 60, in > get_new_connection > cur.execute("SELECT load_extension(%s)", (self.spatialite_lib,)) > File "/Users/kenial/.virtualenvs/fp/lib/python2.7/site- > packages/django/db/backends/sqlite3/base.py", line 485, in execute > return Database.Cursor.execute(self, query, params) > django.core.exceptions.ImproperlyConfigured: Unable to load the > SpatiaLite library extension "/usr/local/lib/libspatialite.dylib" > because: dlsym(0x7f8bf32f8000, sqlite3_spatialite_init): symbol not found > }}} > > On Homebrew's SpatiaLite 4.2.0 package what I've got, it provides both > libspatialite.7.dylib and mod_spatialite.7.dylib. For its proper working, > sqlite3 should load mod_spatialite instead of libspatialite, but it seems > not detecting right package with ctypes.util.find_library('spatialite'). > In case using find_library('mod_spatialite'), it does work. New description: Installing libspatialite package with Homebrew on OS X and using django.contrib.gis.db.backends.spatialite as a database backend, I met this exception: {{{ Traceback (most recent call last): File "manage.py", line 14, in <module> execute_from_command_line(sys.argv) File "/Users/kenial/.virtualenvs/fp/lib/python2.7/site- packages/django/core/management/__init__.py", line 385, in execute_from_command_line utility.execute() File "/Users/kenial/.virtualenvs/fp/lib/python2.7/site- packages/django/core/management/__init__.py", line 377, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "/Users/kenial/.virtualenvs/fp/lib/python2.7/site- packages/django/core/management/base.py", line 288, in run_from_argv self.execute(*args, **options.__dict__) File "/Users/kenial/.virtualenvs/fp/lib/python2.7/site- packages/django/core/management/base.py", line 338, in execute output = self.handle(*args, **options) File "/Users/kenial/.virtualenvs/fp/lib/python2.7/site- packages/django/core/management/commands/migrate.py", line 63, in handle executor = MigrationExecutor(connection, self.migration_progress_callback) File "/Users/kenial/.virtualenvs/fp/lib/python2.7/site- packages/django/db/migrations/executor.py", line 17, in __init__ self.loader = MigrationLoader(self.connection) File "/Users/kenial/.virtualenvs/fp/lib/python2.7/site- packages/django/db/migrations/loader.py", line 48, in __init__ self.build_graph() File "/Users/kenial/.virtualenvs/fp/lib/python2.7/site- packages/django/db/migrations/loader.py", line 179, in build_graph self.applied_migrations = recorder.applied_migrations() File "/Users/kenial/.virtualenvs/fp/lib/python2.7/site- packages/django/db/migrations/recorder.py", line 59, in applied_migrations self.ensure_schema() File "/Users/kenial/.virtualenvs/fp/lib/python2.7/site- packages/django/db/migrations/recorder.py", line 49, in ensure_schema if self.Migration._meta.db_table in self.connection.introspection.get_table_list(self.connection.cursor()): File "/Users/kenial/.virtualenvs/fp/lib/python2.7/site- packages/django/db/backends/__init__.py", line 165, in cursor cursor = self.make_debug_cursor(self._cursor()) File "/Users/kenial/.virtualenvs/fp/lib/python2.7/site- packages/django/db/backends/__init__.py", line 138, in _cursor self.ensure_connection() File "/Users/kenial/.virtualenvs/fp/lib/python2.7/site- packages/django/db/backends/__init__.py", line 133, in ensure_connection self.connect() File "/Users/kenial/.virtualenvs/fp/lib/python2.7/site- packages/django/db/backends/__init__.py", line 122, in connect self.connection = self.get_new_connection(conn_params) File "/Users/kenial/.virtualenvs/fp/lib/python2.7/site- packages/django/contrib/gis/db/backends/spatialite/base.py", line 65, in get_new_connection six.reraise(ImproperlyConfigured, ImproperlyConfigured(new_msg), sys.exc_info()[2]) File "/Users/kenial/.virtualenvs/fp/lib/python2.7/site- packages/django/contrib/gis/db/backends/spatialite/base.py", line 60, in get_new_connection cur.execute("SELECT load_extension(%s)", (self.spatialite_lib,)) File "/Users/kenial/.virtualenvs/fp/lib/python2.7/site- packages/django/db/backends/sqlite3/base.py", line 485, in execute return Database.Cursor.execute(self, query, params) django.core.exceptions.ImproperlyConfigured: Unable to load the SpatiaLite library extension "/usr/local/lib/libspatialite.dylib" because: dlsym(0x7f8bf32f8000, sqlite3_spatialite_init): symbol not found }}} On Homebrew's SpatiaLite 4.2.0 package what I've got, it provides both libspatialite.7.dylib and mod_spatialite.7.dylib. For its proper working, sqlite3 should load mod_spatialite instead of libspatialite, but it seems not detecting right package with ctypes.util.find_library('spatialite'). In case using find_library('mod_spatialite'), it does work. I think it might be a problem of entry point, however, the sqlite3_spatialite_init symbol is in mod_spatialite.7.dylib at least, for it works. -- -- Ticket URL: <https://code.djangoproject.com/ticket/23901#comment:1> Django <https://code.djangoproject.com/> The Web framework for perfectionists with deadlines. -- You received this message because you are subscribed to the Google Groups "Django updates" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-updates+unsubscr...@googlegroups.com. To post to this group, send email to django-updates@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/django-updates/064.dbb5e1e8c4e04ca7e7f54fc848f01612%40djangoproject.com. For more options, visit https://groups.google.com/d/optout.