在Mac上安装pyodbc和unixodbc

问题描述 投票:0回答:4

我在尝试连接到 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 芯片之一上。

macos pyodbc apple-m1 unixodbc
4个回答
4
投票

注意:这是一个糟糕的答案,希望能吸引一个好的答案,但从技术上讲,它似乎有效。

Homebrew for M1 将所有内容安装在

/opt/homebrew
中。其他一切都在
/usr/local
中期待。在新计算机上,
/usr/local/lib
甚至不存在。所以我就这么做了

sudo ln -s /opt/homebrew/lib /usr/local/lib

这非常糟糕,我知道但这是我目前找到的解决这个问题的唯一方法。也许有什么东西没有赶上M1?我不确定。


1
投票

更好的解决方案:

export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:/opt/homebrew/lib

0
投票

有一个拉取请求已经被 pyodbc 维护者忽略了 13 个月:https://github.com/mkleehammer/pyodbc/pull/870

您可以使用此命令安装分叉版本(可能需要卸载以前的版本或添加额外的参数来强制重新安装)

python3 -m pip install git+git://github.com/Aloisius/pyodbc.git@m1-homebrew

0
投票

因此 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
© www.soinside.com 2019 - 2024. All rights reserved.