在使用 python 进行网络请求或安装第三方库时,你可能会遇到“ssl证书错误”。这通常是因为 python 无法验证服务器的 ssl 证书,可能是由于本地证书配置不正确或缺失。以下是一些常见原因和解决方法:
一、更新系统 ca 证书
1.macos
python 安装程序(特别是从 python.org 下载的版本)通常会包含一个脚本来安装 certifi 包提供的根证书。
- 找到 python 应用程序文件夹:通常在
/applications/python 3.x/(版本号可能不同)。 - 执行安装证书的命令:在该文件夹中找到并双击执行
install certificates.command脚本。 - 重新执行你的 python 脚本:再次执行你的代码。
2.linux
尝试更新系统的 ca 证书:
- debian/ubuntu:
sudo apt update && sudo apt install ca-certificates - centos/fedora/rhel:
sudo yum update ca-certificates或sudo dnf update ca-certificates
二、使用certifi包提供的证书
certifi 是一个 python 包,它提供了最新的 mozilla 受信任 ca 证书包。
1.安装certifi
pip install --upgrade certifi
2.修改 python 脚本
在你的 python 脚本中,在 torch.hub.load 之前加入以下代码:
import ssl
import certifi
import os
# 设置 ssl 使用 certifi 提供的证书路径
os.environ['ssl_cert_file'] = certifi.where()
os.environ['requests_ca_bundle'] = certifi.where() # 如果有使用 requests 库
# 尝试修改默认的 ssl context,让 urllib 使用 certifi
try:
ssl._create_default_https_context = lambda: ssl.create_default_context(cafile=certifi.where())
print("已成功配置 ssl context 使用 certifi。")
except exception as e:
print(f"使用 certifi 配置 ssl context 时出错: {e}")
print("将回退到可能未经验证的 context(安全性较低)。")
三、完全禁用 ssl 验证(不推荐,有安全风险)
警告:这个方法会让你的 python 程序在进行所有 https 连接时都不验证服务器证书,这会让你容易受到中间人攻击。只应在完全了解风险且无法使用前两种方法时,或在受信任的内部网络环境中临时使用。
在你的脚本开头(import torch 之前)加入以下代码:
import ssl
try:
_create_unverified_https_context = ssl._create_unverified_context
except attributeerror:
pass
else:
ssl._create_default_https_context = _create_unverified_https_context
print("警告:已全局禁用 ssl 证书验证。这是不安全的。")
四、总结
优先尝试以下方法解决“ssl证书错误”:
- 更新系统 ca 证书:执行 install certificates.command(macos)或更新系统 ca 证书(linux)。
- 使用 certifi 包提供的证书:安装 certifi 并配置 ssl context 使用 certifi 提供的证书。
- 最后手段(不推荐):完全禁用 ssl 验证,但务必了解其安全风险。
希望这些方法能帮助你解决 python 安装时的“ssl证书错误”。如果问题仍然存在,建议检查网络环境或联系 python 社区寻求帮助。
到此这篇关于python安装提示“ssl证书错误”的解决办法的文章就介绍到这了,更多相关python安装提示“ssl证书错误内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论