我有一个新的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看到并使用相关的驱动程序吗?
4条答案
按热度按时间d8tt03nd1#
首先,按照Microsoft here的说明安装ODBC驱动程序。
此外,Microsoft建议按如下方式创建符号链接:
但是,这些文件在M1 Mac上的位置可能会有所不同,这取决于默认的homebrew目录。
xmjla07d2#
这里的问题是“一些关键的CLI工具(如
nvm
和brew
)没有为新的M1架构构建的本机版本。”Source。幸运的是,Apple Silicon附带了一个名为Rosetta 2的转换层,它基本上是一个CLI界面,您必须通过它安装
brew
等工具,以便正确安装它们。在this Medium post中,你可以阅读如何使用Rosetta 2。我们通过安装Python 3.9、pip、wheel、openssl、unixodbc、freetds、正确的驱动程序,最后是pyodbc(按此顺序),所有这些都与Rosetta 2一起工作。
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
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