sql-server 如何在M1 Mac上正确安装pyodbc和驱动程序

vlju58qv  于 2022-10-31  发布在  Mac
关注(0)|答案(4)|浏览(738)

我有一个新的M1亲macbook和我试图安装pyodbc和相关的驱动程序在我的机器上。
到目前为止,我已经按照下面的说明通过homebrew和ODBC驱动程序安装了unixodbc:https://learn.microsoft.com/en-us/sql/connect/odbc/linux-mac/install-microsoft-odbc-driver-sql-server-macos?view=sql-server-ver15https://learn.microsoft.com/en-us/sql/connect/odbc/linux-mac/install-microsoft-odbc-driver-sql-server-macos?view=sql-server-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看到并使用相关的驱动程序吗?

d8tt03nd

d8tt03nd1#

首先,按照Microsoft here的说明安装ODBC驱动程序。
此外,Microsoft建议按如下方式创建符号链接:

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

但是,这些文件在M1 Mac上的位置可能会有所不同,这取决于默认的homebrew目录。

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

xmjla07d2#

这里的问题是“一些关键的CLI工具(如nvmbrew)没有为新的M1架构构建的本机版本。”Source
幸运的是,Apple Silicon附带了一个名为Rosetta 2的转换层,它基本上是一个CLI界面,您必须通过它安装brew等工具,以便正确安装它们。
this Medium post中,你可以阅读如何使用Rosetta 2。我们通过安装Python 3.9、pip、wheel、openssl、unixodbc、freetds、正确的驱动程序,最后是pyodbc(按此顺序),所有这些都与Rosetta 2一起工作。

l7mqbcuq

l7mqbcuq3#

发现以下链接有助于在MacBook M1芯片上安装pyodbc。
我们碰巧得到sql.h文件丢失错误,如果我们尝试直接从网站安装车轮,它抛出平台不支持错误。
按照下面的文档操作,然后将导出命令添加到zrc或bash文件中,就可以开始了。
https://whodeenie.medium.com/installing-pyodbc-and-unixodbc-for-apple-silicon-8e238ed7f216
需要更多的阅读关于错误和人们如何试图了解它。
https://github.com/mkleehammer/pyodbc/issues/846

dgsult0t

dgsult0t4#

我仍然有这个问题与默认的自制和ODBC安装在macOS文图拉与2022年的MacBook Pro。
唯一起作用的是完全卸载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

相关问题