#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.

Reply via email to