Skip to content
This repository was archived by the owner on Feb 24, 2023. It is now read-only.
This repository was archived by the owner on Feb 24, 2023. It is now read-only.

Missing sqlite3 - cannot locate symbol "log" referenced by "/data/local/tmp/usr/lib/python3.9/lib-dynload/_sqlite3.cpython-39.so" #40

Open

Description

@eakteam

When i'm trying to execute a python script i get that :

[CRITICAL] missing one or more core extensions ('sqlite3') most likely because current version of Python has been built without appropriate dev packages

I have tried :

python3 -c "import sqlite3" and it prints out :

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/data/local/tmp/usr/lib/python3.9/sqlite3/__init__.py", line 23, in <module>
    from sqlite3.dbapi2 import *
  File "/data/local/tmp/usr/lib/python3.9/sqlite3/dbapi2.py", line 27, in <module>
    from _sqlite3 import *
ImportError: dlopen failed: cannot locate symbol "log" referenced by "/data/local/tmp/usr/lib/python3.9/lib-dynload/_sqlite3.cpython-39.so"

Activity

  1. eakteam commented on Oct 18, 2020

    @eakteam
    Author

    Any help ?

  2. yan12125 commented on Oct 18, 2020

    @yan12125
    Owner

    The fix is most likely a patch for setup.py, but I haven't had time to write it :/

  3. eakteam commented on Oct 18, 2020

    @eakteam
    Author

    What change it needs exactly ?

  4. eakteam commented on Oct 18, 2020

    @eakteam
    Author

    @yan12125 Where is it located and please give some instructions on how to modify it by myself

  5. eakteam commented on Oct 18, 2020

    @eakteam
    Author

    In the setup.py this is all i found, and doesn't seems to be related to this issue :

    ImportError: dlopen failed: cannot locate symbol "log" referenced by "/data/local/tmp/usr/lib/python3.9/lib-dynload/_sqlite3.cpython-39.so"

    This is the content of setup.py about Sqlite

    def detect_sqlite(self):
            # The sqlite interface
            sqlite_setup_debug = False   # verbose debug prints from this script?
    
            # We hunt for #define SQLITE_VERSION "n.n.n"
            # We need to find >= sqlite version 3.3.9, for sqlite3_prepare_v2
            sqlite_incdir = sqlite_libdir = None
            sqlite_inc_paths = [ '/usr/include',
                                 '/usr/include/sqlite',
                                 '/usr/include/sqlite3',
                                 '/usr/local/include',
                                 '/usr/local/include/sqlite',
                                 '/usr/local/include/sqlite3',
                                 ]
            if CROSS_COMPILING:
                sqlite_inc_paths = []
            MIN_SQLITE_VERSION_NUMBER = (3, 7, 2)
            MIN_SQLITE_VERSION = ".".join([str(x)
                                        for x in MIN_SQLITE_VERSION_NUMBER])
    
            # Scan the default include directories before the SQLite specific
            # ones. This allows one to override the copy of sqlite on OSX,
            # where /usr/include contains an old version of sqlite.
            if MACOS:
                sysroot = macosx_sdk_root()
    
            for d_ in self.inc_dirs + sqlite_inc_paths:
                d = d_
                if MACOS and is_macosx_sdk_path(d):
                    d = os.path.join(sysroot, d[1:])
    
                f = os.path.join(d, "sqlite3.h")
                if os.path.exists(f):
                    if sqlite_setup_debug: print("sqlite: found %s"%f)
                    with open(f) as file:
                        incf = file.read()
                    m = re.search(
                        r'\s*.*#\s*.*define\s.*SQLITE_VERSION\W*"([\d\.]*)"', incf)
                    if m:
                        sqlite_version = m.group(1)
                        sqlite_version_tuple = tuple([int(x)
                                            for x in sqlite_version.split(".")])
                        if sqlite_version_tuple >= MIN_SQLITE_VERSION_NUMBER:
                            # we win!
                            if sqlite_setup_debug:
                                print("%s/sqlite3.h: version %s"%(d, sqlite_version))
                            sqlite_incdir = d
                            break
                        else:
                            if sqlite_setup_debug:
                                print("%s: version %s is too old, need >= %s"%(d,
                                            sqlite_version, MIN_SQLITE_VERSION))
                    elif sqlite_setup_debug:
                        print("sqlite: %s had no SQLITE_VERSION"%(f,))
    
            if sqlite_incdir:
                sqlite_dirs_to_check = [
                    os.path.join(sqlite_incdir, '..', 'lib64'),
                    os.path.join(sqlite_incdir, '..', 'lib'),
                    os.path.join(sqlite_incdir, '..', '..', 'lib64'),
                    os.path.join(sqlite_incdir, '..', '..', 'lib'),
                ]
                sqlite_libfile = self.compiler.find_library_file(
                                    sqlite_dirs_to_check + self.lib_dirs, 'sqlite3')
                if sqlite_libfile:
                    sqlite_libdir = [os.path.abspath(os.path.dirname(sqlite_libfile))]
    
            if sqlite_incdir and sqlite_libdir:
                sqlite_srcs = ['_sqlite/cache.c',
                    '_sqlite/connection.c',
                    '_sqlite/cursor.c',
                    '_sqlite/microprotocols.c',
                    '_sqlite/module.c',
                    '_sqlite/prepare_protocol.c',
                    '_sqlite/row.c',
                    '_sqlite/statement.c',
                    '_sqlite/util.c', ]
    
                sqlite_defines = []
                if not MS_WINDOWS:
                    sqlite_defines.append(('MODULE_NAME', '"sqlite3"'))
                else:
                    sqlite_defines.append(('MODULE_NAME', '\\"sqlite3\\"'))
    
                # Enable support for loadable extensions in the sqlite3 module
                # if --enable-loadable-sqlite-extensions configure option is used.
                if '--enable-loadable-sqlite-extensions' not in sysconfig.get_config_var("CONFIG_ARGS"):
                    sqlite_defines.append(("SQLITE_OMIT_LOAD_EXTENSION", "1"))
    
                if MACOS:
                    # In every directory on the search path search for a dynamic
                    # library and then a static library, instead of first looking
                    # for dynamic libraries on the entire path.
                    # This way a statically linked custom sqlite gets picked up
                    # before the dynamic library in /usr/lib.
                    sqlite_extra_link_args = ('-Wl,-search_paths_first',)
                else:
                    sqlite_extra_link_args = ()
    
                include_dirs = ["Modules/_sqlite"]
                # Only include the directory where sqlite was found if it does
                # not already exist in set include directories, otherwise you
                # can end up with a bad search path order.
                if sqlite_incdir not in self.compiler.include_dirs:
                    include_dirs.append(sqlite_incdir)
                # avoid a runtime library path for a system library dir
                if sqlite_libdir and sqlite_libdir[0] in self.lib_dirs:
                    sqlite_libdir = None
                self.add(Extension('_sqlite3', sqlite_srcs,
                                   define_macros=sqlite_defines,
                                   include_dirs=include_dirs,
                                   library_dirs=sqlite_libdir,
                                   extra_link_args=sqlite_extra_link_args,
                                   libraries=["sqlite3",]))
            else:
                self.missing.append('_sqlite3')
    
  6. changed the title [-]Prebuilt Native lib - missing sqlite3[/-] [+]Missing sqlite3 - cannot locate symbol "log" referenced by "/data/local/tmp/usr/lib/python3.9/lib-dynload/_sqlite3.cpython-39.so"[/+] on Oct 18, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions