Mac OS X下Python 3出现SSL证书错误的解决求助
Homebrew安装的Python 3.6在Mac OS X上的SSL证书错误修复方案
我之前也碰到过Homebrew安装的Python和官方包在SSL证书问题上的差异,官方的Install Certificates.command脚本确实不适用于Homebrew版本——毕竟两者的安装路径和结构完全不同。咱们一步步来排查解决:
第一步:确认你的Python和certifi的实际路径
首先得搞清楚你当前用的Python是不是Homebrew安装的版本,以及certifi证书文件的位置:
- 打开终端,运行
which python3,正常输出应该是/usr/local/bin/python3(Intel Mac)或者/opt/homebrew/bin/python3(M1/M2 Mac),这说明你用的是Homebrew的Python。 - 接着运行
python3 -m certifi,会输出certifi自带的根证书文件路径,比如/usr/local/lib/python3.6/site-packages/certifi/cacert.pem。
第二步:让Python强制使用certifi的证书
有时候Python的SSL模块不会自动识别certifi的证书,我们可以通过环境变量强制指定:
- 编辑你的shell配置文件:
- 如果你用的是Mac默认的zsh,打开
~/.zshrc;如果是bash,打开~/.bash_profile。
- 如果你用的是Mac默认的zsh,打开
- 在文件末尾添加一行:
export SSL_CERT_FILE=$(python3 -m certifi) - 保存文件后,运行
source ~/.zshrc(或者source ~/.bash_profile)让配置立即生效。
第三步:重新安装Homebrew的Python 3.6(可选,若第二步无效)
如果上面的设置还是没解决问题,可能是Homebrew的Python安装包有损坏,试试重新安装:
brew reinstall python@3.6
注意:如果Homebrew官方仓库已经移除了Python 3.6的包,你可能需要先添加第三方tap(比如
brew tap homebrew/core),不过先试试上面的命令,大部分情况下能正常执行。
第四步:验证修复效果
运行下面的命令,检查Python的SSL默认证书路径是否已经指向certifi的文件:
python3 -c "import ssl; print(ssl.get_default_verify_paths())"
看输出里的 openssl_cafile 字段,应该和你之前用 python3 -m certifi 得到的路径一致。之后再尝试安装模块,比如 pip3 install requests,应该就不会再出现SSL证书错误了。
另外要注意:确保你用的 pip3 是Homebrew Python对应的版本——运行 which pip3,输出路径应该和 which python3 一致,避免混用其他版本的pip导致问题。
内容的提问来源于stack exchange,提问作者a1letterword
相关产品推荐
相关产品推荐

