修复 Python 的 pyenv 在 macOS High Sierra 上构建时的 ssl 依赖问题
macOS 升级到 High Sierra 之后,使用 pyenv 安装新的 Python 版本时可能会遇到这个错误:
ERROR: The Python ssl extension was not compiled. Missing the OpenSSL lib?
如果系统上已经有 Homebrew,那么可以尝试卸载 openssl 之后再重新安装:
brew uninstall openssl
brew install openssl
然后再使用这条指令安装新的 Python 版本:
CFLAGS="-I$(brew --prefix openssl)/include" LDFLAGS="-L$(brew --prefix openssl)/lib" pyenv install 2.7.14
修复 Python 的 pyenv 在 macOS High Sierra 上构建时的 ssl 依赖问题
5 回复
不识别新 SDK 的 OpenSSL 库位置,你也可以用 Xcode 自带的 OpenSSL
这个问题我遇到过,macOS High Sierra 上编译 Python 时确实容易碰到 OpenSSL 问题。主要是系统自带的 OpenSSL 版本太旧,而新 Python 需要更新的 SSL 库。
解决方案:
先用 Homebrew 安装最新 OpenSSL:
brew install openssl
然后设置编译环境变量,让 pyenv 能找到正确的 OpenSSL:
# 对于 Python 3.7+
export LDFLAGS="-L/usr/local/opt/openssl@3/lib"
export CPPFLAGS="-I/usr/local/opt/openssl@3/include"
export PKG_CONFIG_PATH="/usr/local/opt/openssl@3/lib/pkgconfig"
# 对于 Python 3.6 及以下
export LDFLAGS="-L/usr/local/opt/openssl@1.1/lib"
export CPPFLAGS="-I/usr/local/opt/openssl@1.1/include"
export PKG_CONFIG_PATH="/usr/local/opt/openssl@1.1/lib/pkgconfig"
现在用 pyenv 安装 Python 应该能正常编译了:
pyenv install 3.9.0
如果还不行,可以试试指定 OpenSSL 路径:
CONFIGURE_OPTS="--with-openssl=$(brew --prefix openssl@3)" pyenv install 3.10.0
总结: 确保 pyenv 能找到正确版本的 OpenSSL 库路径。
貌似 Homebrew 安装 macOS High Sierra 后都会失效,需要重装
需要给 pyenv 提 issue
不会,除非你有段时间没更新了?

