我在尝试连接到 SQL Server 时看到了 Pypyodbc: Can't open lib 'FreeTDS' : file not find") 错误,但是,那已经有 7 年历史了,似乎对我不起作用,可能是因为brew现在似乎把东西放在不同的地方了?
我用brew安装unixodbc,它在
/opt/homebrew/Cellar
。
当我执行 pip install pyodbc 时,它似乎有效,但我得到:
connection = pyodbc.connect(connection_string)
pyodbc.Error: ('01000', "[01000] [unixODBC][Driver Manager]Can't open lib '/usr/local/lib/libtdsodbc.so' : file not found (0) (SQLDriverConnect)")
这显然是错误的,因为 libtdsodbc 位于
/opt/homebrew/lib
我尝试编辑
odbcinst.ini
,但我不确定它应该放在哪里。 /etc 或 /etc/unixODBC 目录中没有一个...当我创建其中之一时,似乎没有被读取,因为它仍然抱怨 /usr/local/lib...
预计到达时间:这是在新的 Macbook 上,因此在新的 M1 芯片之一上。
注意:这是一个糟糕的答案,希望能吸引一个好的答案,但从技术上讲,它似乎有效。
Homebrew for M1 将所有内容安装在
/opt/homebrew
中。其他一切都在 /usr/local
中期待。在新计算机上,/usr/local/lib
甚至不存在。所以我就这么做了
sudo ln -s /opt/homebrew/lib /usr/local/lib
这非常糟糕,我知道但这是我目前找到的解决这个问题的唯一方法。也许有什么东西没有赶上M1?我不确定。
更好的解决方案:
export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:/opt/homebrew/lib
有一个拉取请求已经被 pyodbc 维护者忽略了 13 个月:https://github.com/mkleehammer/pyodbc/pull/870
您可以使用此命令安装分叉版本(可能需要卸载以前的版本或添加额外的参数来强制重新安装)
python3 -m pip install git+git://github.com/Aloisius/pyodbc.git@m1-homebrew
因此 Unix ODBC 将 ODBC 驱动程序移至
/usr/lib/libiodbcinst.2.dylib
。 这是真正的 d* 举动!
打开 ODBC 驱动程序配置文件。添加以下行或类似行,具体取决于您的 ODBC 安装位置:
ODBCInstLib=libiodbcinst.2.dylib
这可确保 ODBC 驱动程序使用正确的 iODBC 库 (/usr/lib/libiodbcinst.2.dylib)。
您的驱动程序配置应如下所示:
[Driver]
ErrorMessagesPath=/Library/simba/spark/ErrorMessages/
LogLevel=0
LogPath=
SwapFilePath=/tmp
ODBCInstLib=libiodbcinst.2.dylib