M1 Mac安装psycopg2时出现ld: library not found for -lssl错误求助
解决M1 Mac上安装psycopg2时的-lssl链接错误
问题背景
环境:Mac Air M1 2021,OS Ventura 13.4.1,Python 3.9
安装psycopg2时触发以下链接错误:
ld: library not found for -lssl
clang: error: linker command failed with exit code 1 (use -v to see invocation)
error: command '/usr/bin/gcc' failed with exit code 1
已尝试brew install openssl并设置export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/opt/openssl/lib/、xcode-select --install,但问题未解决。
有效解决方案
方案1:安装预编译包(最简便)
直接安装psycopg2的预编译版本,跳过本地编译步骤:
pip install psycopg2-binary
方案2:正确配置OpenSSL路径后编译安装
M1架构下Homebrew的默认安装路径为/opt/homebrew(而非Intel Mac的/usr/local),之前的环境变量路径指向错误,导致编译器找不到ssl库。按以下步骤操作:
- 确保OpenSSL已安装:
brew install openssl - 临时设置环境变量(当前终端会话生效):
export LDFLAGS="-L/opt/homebrew/opt/openssl/lib" export CPPFLAGS="-I/opt/homebrew/opt/openssl/include" export PKG_CONFIG_PATH="/opt/homebrew/opt/openssl/lib/pkgconfig" - 执行psycopg2安装:
pip install psycopg2
如果需要永久生效环境变量,可将上述export命令添加到你的shell配置文件(M1 Mac默认是~/.zshrc):
- 编辑配置文件:
nano ~/.zshrc - 添加环境变量内容后保存退出
- 使配置生效:
source ~/.zshrc - 再次执行
pip install psycopg2
方案3:安装时直接指定编译参数
无需设置环境变量,直接在pip安装命令中传入OpenSSL路径参数:
pip install psycopg2 --no-cache-dir --global-option=build_ext --global-option="-L/opt/homebrew/opt/openssl/lib" --global-option="-I/opt/homebrew/opt/openssl/include"
内容的提问来源于stack exchange,提问作者Volear
相关产品推荐
相关产品推荐

