如何在M1 mac上正确安装pyodbc和驱动程序



我有一个新的M1 pro macbook,我正在尝试在我的机器上安装pyodbc和相关的驱动程序。

到目前为止,我已经根据以下说明通过自制程序和ODBC驱动程序安装了unixodbc:https://learn.microsoft.com/en-us/sql/connect/odbc/linux-mac/install-microsoft-odbc-driver-sql-server-macos?view=sql-服务器版本15https://learn.microsoft.com/en-us/sql/connect/odbc/linux-mac/install-microsoft-odbc-driver-sql-server-macos?view=sql-服务器-ver15

然后我pip安装了pyodbc,但当我尝试在测试脚本中运行pyodbc.connect()时,python会中止并显示以下消息,无论我使用哪个连接字符串:

[1] 2086 abort python test.py

经过更多的调查,我发现pyodbc没有任何驱动程序。当我运行pyodbc.drivers()时,我得到一个空列表。所以pyodbc似乎找不到我之前安装的驱动程序。

这是我运行odbcinst -j:时的输出

unixODBC 2.3.9
DRIVERS............: /opt/homebrew/etc/odbcinst.ini
SYSTEM DATA SOURCES: /opt/homebrew/etc/odbc.ini
FILE DATA SOURCES..: /opt/homebrew/etc/ODBCDataSources
USER DATA SOURCES..: /Users/kdot/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8

odbcinst.ini文件包含:

[ODBC Driver 17 for SQL Server]
Description=Microsoft ODBC Driver 17 for SQL Server
Driver=/opt/homebrew/lib/libmsodbcsql.17.dylib
UsageCount=3

我还试图在连接字符串中显式地为pyodbc提供驱动程序文件路径,但pyodbc.connect()只是挂起,而不是立即中止。

我在虚拟环境中运行所有这些,版本如下:

python: 3.8.10
pyodbc: 4.0.32

有人知道如何让pyodbc看到并使用相关的驱动程序吗?

首先,按照Microsoft的指示在此处安装ODBC驱动程序。

此外,微软建议创建如下符号链接:

sudo ln -s /usr/local/etc/odbcinst.ini /etc/odbcinst.ini
sudo ln -s /usr/local/etc/odbc.ini /etc/odbc.ini

然而,这些文件在M1 Mac上的位置可能会有所不同,这取决于默认的自制程序目录。在我的案例中,以下路径起作用:

sudo ln -s /opt/homebrew/etc/odbcinst.ini /etc/odbcinst.ini
sudo ln -s /opt/homebrew/etc/odbc.ini /etc/odbc.ini

这就是我在m2 macbook上的工作原理(来自官方ms文档(
请确保安装了自制程序。

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
brew tap microsoft/mssql-release https://github.com/Microsoft/homebrew-mssql-release
brew update
HOMEBREW_ACCEPT_EULA=Y brew install msodbcsql17 mssql-tools
sudo ln -s /opt/homebrew/etc/odbcinst.ini /etc/odbcinst.ini
sudo ln -s /opt/homebrew/etc/odbc.ini /etc/odbc.ini

发现以下链接有助于在MacBook M1芯片上安装pyodbc。

我们碰巧得到sql.h文件丢失错误,如果我们尝试直接从站点安装轮子,它会抛出平台不支持的错误。

按照下面的文档,然后将导出命令添加到zrc或bash文件中,就可以开始了。

https://whodeenie.medium.com/installing-pyodbc-and-unixodbc-for-apple-silicon-8e238ed7f216

需要更多关于这个bug的阅读,以及人们如何尝试学习它。

https://github.com/mkleehammer/pyodbc/issues/846

这里的问题是"CCD_ 7和CCD_"来源

幸运的是,Apple Silicon提供了一个名为Rosetta 2的翻译层,它基本上是一个CLI界面,您必须通过它安装brew等工具才能正确安装。

在这篇Medium文章中,你可以阅读如何使用罗塞塔2。我们通过安装Python3.9、pip、wheel、openssl、unixodbc、freetds、正确的驱动程序,最后用Rosetta 2安装pyodbc(按顺序(,使pyodbc正常工作。

默认的Homebrew&使用2022款MacBook Pro在macOS Ventura上安装ODBC。

唯一有效的方法是完全卸载Homebrew和ODBC驱动程序,然后用前缀arch -x86_64重新安装这两个驱动程序。

$ arch -x86_64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

$ arch -x86_64 brew install msodbcsql18 mssql-tools18

对于MAC M1芯片

pip install --no-binary :all: pyodbc

参考:https://github.com/mkleehammer/pyodbc/issues/1124

相关内容

  • 没有找到相关文章

最新更新