You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 03:35:28