Mac M1 Pro下pyodbc连Azure SQL报错:找不到libmsodbcsql.18.dylib
Mac M1 Pro下pyodbc连接Azure SQL Server报错解决
环境信息
- Python: 3.9.7
- pyodbc: 4.0.34
- 操作系统: Mac (M1 Pro)
- 数据库驱动: ODBC Driver 18 for SQL Server
问题描述
使用pyodbc连接Azure SQL Server时抛出错误:
('01000', "[01000] [unixODBC][Driver Manager]Can't open lib '/opt/homebrew/lib/libmsodbcsql.18.dylib' : file not found (0) (SQLDriverConnect)")
实际文件存在,且通过lipo -info确认库为arm64架构,/opt/homebrew/lib/libmsodbcsql.18.dylib是/opt/homebrew/Cellar/msodbcsql18/18.1.1.1/lib/libmsodbcsql.18.dylib的快捷方式。修改驱动路径为实际路径后仍报错。
已确认的正常项:
odbcinst -j输出正常,/opt/homebrew/etc/odbcinst.ini中驱动配置正确pyodbc.drivers()可返回[ODBC Driver 18 for SQL Server]- 终端通过
isql命令可正常连接数据库
解决方法
1. 检查Python架构兼容性
执行命令确认当前Python的架构:
python -c "import platform; print(platform.architecture())"
若Python为x86_64架构(通过Rosetta运行),会与arm64的ODBC驱动产生兼容性问题,导致找不到库。
2. 切换到arm64架构的Python环境
通过Homebrew安装原生arm64的Python:
brew install python
确认当前使用的是该Python:
which python
输出应为/opt/homebrew/bin/python。
3. 重新编译安装pyodbc
先卸载现有pyodbc,再指定链接参数从源码编译安装:
pip uninstall -y pyodbc export LDFLAGS="-L/opt/homebrew/lib" export CPPFLAGS="-I/opt/homebrew/include" pip install pyodbc --no-binary :all:
--no-binary :all:强制源码编译,确保pyodbc适配arm64架构并正确链接unixODBC库。
4. 调整终端运行模式(可选)
若之前使用的是Rosetta模式的终端,右键终端应用→「显示简介」,取消勾选「使用Rosetta打开」,重启终端后再尝试连接。
内容的提问来源于stack exchange,提问作者mnm
相关产品推荐
相关产品推荐

