macOS M1 Pro下pyodbc调用SQL Server驱动提示文件不存在怎么解决
解决方案
按以下步骤依次排查:
- 完成ODBC驱动注册
unixODBC默认读取/etc/odbcinst.ini作为系统级驱动配置文件,你当前该文件为空,未完成驱动注册,执行以下命令将homebrew安装包自带的配置写入系统配置:
sudo cat /opt/homebrew/opt/msodbcsql17@17.8/odbcinst.ini >> /etc/odbcinst.ini
执行完成后运行odbcinst -q -d,如果返回ODBC Driver 17 for SQL Server说明注册成功。
- 修正pyodbc连接参数
驱动注册完成后无需填写完整的dylib路径,直接使用注册的驱动名称即可,避免后续homebrew版本升级导致路径失效:
conn = pyodbc.connect(driver='{ODBC Driver 17 for SQL Server}', server='server', database='DB', uid='id', pwd='password')
- 验证架构匹配
如果仍报错,依次检查驱动和Python的架构是否一致:
- 检查驱动架构:执行
file /opt/homebrew/Cellar/msodbcsql17/17.8.1.1/lib/libmsodbcsql.17.dylib,返回结果需包含arm64标识,如果仅返回x86_64说明你安装的是x86版本驱动,需要切换到ARM架构的homebrew环境重装msodbcsql17 - 检查Python架构:执行
python3 -c "import platform;print(platform.machine())",返回结果为arm64才是原生M1版本Python,如果返回x86_64说明你当前运行的是Rosetta转译的Python,架构不匹配会触发「文件不存在」报错
- 修复软链接
检查/opt/homebrew/lib/libmsodbcsql.17.dylib软链接是否存在且指向正确:
ls -l /opt/homebrew/lib/libmsodbcsql.17.dylib
如果软链接失效,手动创建即可:
ln -s /opt/homebrew/Cellar/msodbcsql17/17.8.1.1/lib/libmsodbcsql.17.dylib /opt/homebrew/lib/libmsodbcsql.17.dylib
补充:如果弹出「无法验证开发者」的系统提示,请到「系统设置→隐私与安全性」中允许该动态库运行即可
内容的提问来源于stack exchange,提问作者Adam Xia
相关产品推荐
相关产品推荐

