在macOS 12上pip install pyodbc
导致错误:
src/pyodbc.h:56:10: fatal error: 'sql.h' file not found
对于macOS和Pip的旧版本,在OSX10.9(Mavericks(上安装pyodbc失败中已经解决了这个主题。那里提供的答案都不适用于当前版本。
注意:在给定macOS、Pip、Homebrew和unixODBC版本的情况下,失败的原因似乎会随着时间的推移而变化很大。
在pyodbc 4.0.32:中指定unixODBC库的位置时运行pip install pyodbc
CPPFLAGS='-I/opt/homebrew/Cellar/unixodbc/2.3.9_1/include'
LDFLAGS='-L/opt/homebrew/Cellar/unixodbc/2.3.9_1/lib'
pip install pyodbc
似乎没有必要安装iODBC,因为unixODBC可以工作。
此外,获取用于SQL Server的ODBC驱动程序也很麻烦。文档位于https://learn.microsoft.com/en-us/sql/connect/odbc/linux-mac/install-microsoft-odbc-driver-sql-server-macos不准确,因为OpenSSL版本3和1在安装时无法正确检测。
由于OpenSSL版本冲突,尝试连接SQL服务器将导致以下错误:
- SSL提供程序:〔无法加载OpenSSL库,请确保已安装OpenSSL 1.0或1.1〕
- 客户端无法建立连接
- 警告:<此处的命令/库>正在以不安全的方式加载libcrypto(随后发生进程崩溃(
中描述了修复驱动程序加载的各种尝试https://github.com/microsoft/homebrew-mssql-release/issues/59.
手动符号链接OpenSSL 1.1修复了撰写本文时的问题:
ln -s /opt/homebrew/opt/openssl@1.1/lib/libssl.dylib /usr/local/lib/
ln -s /opt/homebrew/opt/openssl@1.1/lib/libcrypto.dylib /usr/local/lib/
请理解,这可能会发生变化。