尝试导入pypyodbc模块会出现错误'找不到ODBC库.是否设置了LD_LIBRARY_PATH?'

fed*_*qui 5 python linux import odbc pypyodbc

我在Linux Mint 18上运行Python 3.5.我想加载pypyodbc模块.但是,无论我尝试什么,我总是得到错误:

OdbcNoLibrary: 'ODBC Library is not found. Is LD_LIBRARY_PATH set?'
Run Code Online (Sandbox Code Playgroud)

使用python导入之前设置LD_LIBRARY_PATH我得到了设置路径的建议os.getcwd(),但它也没有工作,并给了我同样的错误.

我应该安装什么才能使它工作?

查看错误的完整日志:

In [1]: import pypyodbc
---------------------------------------------------------------------------
OSError                                   Traceback (most recent call last)
/home/me/env/lib/python3.5/site-packages/pypyodbc.py in <module>()
    426         # First try direct loading libodbc.so
--> 427         ODBC_API = ctypes.cdll.LoadLibrary('libodbc.so')
    428     except:

/usr/lib/python3.5/ctypes/__init__.py in LoadLibrary(self, name)
    424     def LoadLibrary(self, name):
--> 425         return self._dlltype(name)
    426 

/usr/lib/python3.5/ctypes/__init__.py in __init__(self, name, mode, handle, use_errno, use_last_error)
    346         if handle is None:
--> 347             self._handle = _dlopen(self._name, mode)
    348         else:

OSError: libodbc.so: cannot open shared object file: No such file or directory

During handling of the above exception, another exception occurred:

OdbcNoLibrary                             Traceback (most recent call last)
<ipython-input-1-8f9e32dd2219> in <module>()
----> 1 import pypyodbc

/home/me/env/lib/python3.5/site-packages/pypyodbc.py in <module>()
    437             lib_paths = [path for path in lib_paths if os.path.exists(path)]
    438             if len(lib_paths) == 0 :
--> 439                 raise OdbcNoLibrary('ODBC Library is not found. Is LD_LIBRARY_PATH set?')
    440             else:
    441                 library = lib_paths[0]

OdbcNoLibrary: 'ODBC Library is not found. Is LD_LIBRARY_PATH set?'
Run Code Online (Sandbox Code Playgroud)

fed*_*qui 8

安装python-pyodb包解决了它:

sudo apt-get install python-pyodbc
Run Code Online (Sandbox Code Playgroud)

现在导入成功:

In [2]: import pypyodbc

In [3]:    
Run Code Online (Sandbox Code Playgroud)

  • 您实际上并不需要“python-pyodbc”,只需要它的依赖项之一。`sudo apt-get install unixodbc`足以避免`pypyodbc.OdbcNoLibrary`错误。 (2认同)