问题描述
报错信息: ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1056)
python版本:3.7.3
处理过程
- 排查 virtual env环境依赖的python版本不对-- 然而并不是
- 排查 openssl版本不正确或者未安装
brew install openssl
echo 'export PATH="/usr/local/opt/openssl@1.1/bin:$PATH"' >> ~/.zshrc
export LDFLAGS="-L/usr/local/opt/openssl@1.1/lib"
export CPPFLAGS="-I/usr/local/opt/openssl@1.1/include"
还是未解决
3. 查看相关问题帖子,无非就一下2种方案
# 方案一 然而我是用homebrew安装的python 并没有Install\ Certificates.command文件
/Applications/Python\ 3.7/Install\ Certificates.command
#方案二 取消ssl验证 此方案直接不考虑,与掩耳盗铃无异
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
- 我开始怀疑python本身的bug了,安装最新的python
brew install python3
# 别忘了重新创建或者更改你的 virtual env 的 python版本
mkvirtualenv xxx_env
workon xxx_env
完美!!! 问题得到解决, 新的python版本是3.7.7
总结
- 有时候找不到问题原因的时候,怀疑一切可能,然后一一排查吧