【问题标题】:What is the "odbc" library that Pyodbc is failing to find?Pyodbc 找不到的“odbc”库是什么?
【发布时间】:2017-09-05 18:56:48
【问题描述】:

我已经在 Mac OS X 10.12.6 (Sierra) 上成功安装了 unixODBC 2.3.4,但是当我尝试运行 pip install pyodbc 时遇到以下错误:

ld: library not found for -lodbc

我假设它正在寻找的是与 unixODBC 一起安装的 libodbc.la:

test -z "/usr/local/lib" || .././install-sh -c -d "/usr/local/lib"
/bin/sh ../libtool   --mode=install /usr/bin/install -c   libodbc.la '/usr/local/lib'

这不是 Pyodbc 想要的吗?如何让它成功找到并使用它?

【问题讨论】:

    标签: macos pyodbc unixodbc


    【解决方案1】:

    我已经下载了Pyodbc source(版本 4.0.17)的副本,并通过检查其setup.py 发现了这一点。它确实在寻找 unixODBC:

    # The latest versions of OS X no longer ship with iodbc.  Assume
    # unixODBC for now.
    settings['libraries'].append('odbc')
    

    这会导致ld 被调用为-lodbc,它会寻找/lib/usr/libodbc.dylib。不幸的是,自 El Capitan 以来,正常安装进入 /lib/local/usr

    然后,我为解决此问题所做的就是在 setup.pysys.platform == 'darwin': 部分下添加以下行:

    # unixODBC make/install places libodbc.dylib in /usr/local/lib/ by default
    # (also OS/X since El Capitan prevents /usr/lib from being accessed )
    settings['library_dirs'] = [ '/usr/local/lib' ]
    

    然后我可以使用 PIP 从我的本地系统安装它,如下所示:

    $ sudo pip install /path/to/pyodbc-4.0.17/
    

    我会努力为 Pyodbc 制作一个补丁,但这让我在此期间得以解决。

    【讨论】:

      猜你喜欢
      • 2022-06-15
      • 1970-01-01
      • 1970-01-01
      • 2014-08-14
      • 1970-01-01
      • 1970-01-01
      • 2010-10-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多