更改pyodbc希望libodbc.2.dylib存在的位置(更改默认odbc文件位置)

2024-09-19 23:41:22 发布

您现在位置:Python中文网/ 问答频道 /正文

导入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/的权限,因此我将自制软件安装到了~/.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

谢谢


Tags: testsolibpackagesusrlocalsitecpython
1条回答
网友
1楼 · 发布于 2024-09-19 23:41:22

多亏了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绕过二进制文件并自行构建

相关问题 更多 >