【问题标题】:Change where pyodbc expects libodbc.2.dylib to live (changing default odbc file locations)更改 pyodbc 期望 libodbc.2.dylib 存在的位置(更改默认 odbc 文件位置)
【发布时间】:2020-04-30 16:45:26
【问题描述】:

导入pyodbc时

❯ python
>>> import pyodbc
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: dlopen(/Users/pcosta/Documents/test/myenv/lib/python3.7/site-packages/pyodbc.cpython-37m-darwin.so, 2): Library not loaded: /usr/local/opt/unixodbc/lib/libodbc.2.dylib
  Referenced from: /Users/pcosta/Documents/test/myenv/lib/python3.7/site-packages/pyodbc.cpython-37m-darwin.so
  Reason: image not found

我知道为什么会这样,因为我在预期的位置没有libodbc.2.dylib。原因是我没有写信给/usr/local/ 的权限,所以我将 Homebrew 安装到~/.brew。这大多工作正常。我什至可以按照此处列出的步骤使tsqlisql 按预期工作:https://github.com/mkleehammer/pyodbc/wiki/Connecting-to-SQL-Server-from-Mac-OSX

所以我确实有libodbc.2.dylib,只是它位于/Users/pcosta/.brew/lib,而不是/usr/local/opt/unixodbc/lib

主要问题是我可以让 pyodbc 在另一个目录中查找libodbc.2.dylib(和其他相关文件)吗?

我有所有需要的文件并正确配置它们,我只需要以某种方式重新指向 pyodbc。

谢谢!

【问题讨论】:

标签: python odbc pyodbc freetds unixodbc


【解决方案1】:

部分感谢this GitHub issue 的指导,我能够找到一些解决方案。

假设你有brew install unixodbc:

  1. 添加以下路径(至.zshrc.bashrc.bash_profile):
export LDFLAGS="-L/Users/pcosta/homebrew/opt/unixodbc/lib $LDFLAGS"
export CPPFLAGS="-I/Users/pcosta/homebrew/opt/unixodbc/include $CPPFLAGS"
export PKG_CONFIG_PATH="/Users/pcosta/homebrew/opt/unixodbc/lib/pkgconfig $PKG_CONFIG_PATH"
  1. 运行 pip install --no-binary pyodbc pyodbc 绕过二进制文件并自行构建

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-19
    • 1970-01-01
    相关资源
    最近更新 更多