macOS下pyodbc连接Azure SQL提示ODBC驱动文件找不到求助
解决macOS下pyodbc连接Azure SQL时找不到ODBC驱动的问题
针对你遇到的Can't open lib 'ODBC Driver 18 for SQL Server' : file not found错误,按以下步骤排查解决:
1. 确认驱动文件实际存在
首先检查驱动文件是否真的在指定路径:
ls /opt/homebrew/lib/libmsodbcsql.18.dylib
如果输出提示文件不存在,重新安装驱动:
HOMEBREW_ACCEPT_EULA=Y brew reinstall msodbcsql18
2. 直接使用驱动绝对路径替代名称
绕开驱动名称查找逻辑,在连接字符串里直接指定驱动文件的绝对路径:
import pyodbc SERVER = 'mcp-mldb-prod-4fcf7c3f.database.windows.net' DATABASE = 'mldb' USERNAME = 'metauser' PASSWORD = 'metapassword' # 直接使用驱动路径代替驱动名称 connectionString = f'DRIVER=/opt/homebrew/lib/libmsodbcsql.18.dylib;SERVER={SERVER};DATABASE={DATABASE};UID={USERNAME};PWD={PASSWORD}' conn = pyodbc.connect(connectionString)
3. 强制指定odbcinst.ini路径
确保pyodbc读取正确的驱动配置文件,可在脚本开头添加环境变量设置:
import os os.environ['ODBCINSTINI'] = '/opt/homebrew/etc/odbcinst.ini' import pyodbc # 后续连接代码不变 SERVER = 'mcp-mldb-prod-4fcf7c3f.database.windows.net' DATABASE = 'mldb' USERNAME = 'metauser' PASSWORD = 'metapassword' connectionString = f'DRIVER={{ODBC Driver 18 for SQL Server}};SERVER={SERVER};DATABASE={DATABASE};UID={USERNAME};PWD={PASSWORD}' conn = pyodbc.connect(connectionString)
或者在运行脚本前通过终端设置环境变量:
export ODBCINSTINI=/opt/homebrew/etc/odbcinst.ini python your_script.py
4. 验证架构匹配(Apple Silicon机型)
如果你使用的是Apple Silicon(M1/M2等)芯片,确认unixODBC和驱动都是arm64架构:
file /opt/homebrew/lib/libodbc.dylib file /opt/homebrew/lib/libmsodbcsql.18.dylib
两个命令的输出都应包含arm64。如果出现x86_64,说明你可能通过Rosetta运行了x86版本的brew,需要卸载后重新安装arm64版本的brew,再重新安装驱动。
内容的提问来源于stack exchange,提问作者merkle
相关产品推荐
相关产品推荐

