加载libodbc.so = libodbc.so时出错:无法打开共享库文件:

问题描述

我想从AWS glue ETL脚本执行存储过程。 我已将pypyodbc软件包上传一个zip文件中,并在 Python库路径中提供了其路径, pypyodb.py文件使用以下代码加载库

try:
    print('searching libodbc.so')
    # First try direct loading libodbc.so
    ODBC_API = ctypes.cdll.LoadLibrary('libodbc.so')
except:
    # If direct loading libodbc.so Failed
    # We try finding the libodbc.so by using find_library
    from ctypes.util import find_library
    library = find_library('odbc')
    if library is None:
        # If find_library still can not find the library
        # we try finding it manually from where libodbc.so usually appears
        print('manually searching libodbc.so')
        lib_paths = ("/tmp/libodbc.so","/tmp/configs/lib/libodbc.so","/tmp/pypyodbc.zip/configs/lib/libodbc.so","/usr/lib/libodbc.so","/usr/lib/i386-linux-gnu/libodbc.so","/usr/lib/x86_64-linux-gnu/libodbc.so","/usr/lib/libiodbc.dylib")
        lib_paths = [path for path in lib_paths if os.path.exists(path)]
        if len(lib_paths) == 0 :
            raise OdbcNoLibrary('ODBC Library is not found. Is LD_LIBRARY_PATH set?')
        else:
            library = lib_paths[0]

    # Then we try loading the found libodbc.so again
    try:
        ODBC_API = ctypes.cdll.LoadLibrary(library)
    except Exception as e:
        print('Error while loading libodbc.so = ',str(e))
        # If still fail loading,abort.
        raise OdbcLibraryError('Error while loading ' + library)

我已经在s3上上传了libodbc.so文件,并在引用文件路径字段

中提供了对AWS glue作业的引用。

当我尝试导入pypyodbc时,抛出以下错误

无法打开共享库文件:没有这样的文件或目录

文件“ /tmp/localPyFiles-f5a57c04-cb23-4782-a9f8-2a5018c86c99/pypyodbc.py”,第429行,在ODBC_API = ctypes.cdll.LoadLibrary('libodbc.so')中,文件“ / usr / lib64 / python3.7 / ctypes / init .py”,位于LoadLibrary中的第437行,返回self._dlltype(name)文件“ /usr/lib64/python3.7/ctypes/init” > .py“,第359行,在 init 中self._handle = _dlopen(self._name,mode)OSError:libodbc.so:无法打开共享对象文件:无此类文件或目录上面的异常,发生另一个异常:追溯(最近一次调用为最新):文件“ /tmp/localPyFiles-f5a57c04-cb23-4782-a9f8-2a5018c86c99/pypyodbc.py”,行448,在ODBC_API = ctypes.cdll.LoadLibrary(library )文件“ /usr/lib64/python3.7/ctypes/init.py”,行437,在LoadLibrary中返回self._dlltype(name)文件“ /usr/lib64/python3.7/ctypes /init.py”,第359行,位于 init self._handle = _dlopen(self._name,mode)OSError:libodbc.so:无法打开共享对象ct文件:无此类文件或目录在处理上述异常期间,发生了另一个异常:回溯(最近一次调用为最新):导入pypyodbc文件中的文件“ / tmp / tops2-calculate-argus-job-1”,第7行“ /tmp/localPyFiles-f5a57c04-cb23-4782-a9f8-2a5018c86c99/pypyodbc.py”,第452行,在抬起OdbcLibraryError('加载'+库时出错pypyodbc.OdbcLibraryError:'加载libodbc.so时出错'>

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)