You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置Python使用与wget相同的SSL证书?

解决Detectron2/Requests SSL证书验证失败但wget可正常下载的问题

问题描述

使用Detectron2下载权重文件时触发SSL证书验证失败错误,用requests库直接下载同一文件也失败,但通过wget命令却能正常完成下载。

相关代码及报错:
Detectron2代码:

from detectron2.config import get_cfg
from detectron2.engine import DefaultTrainer

cfg = get_cfg()
cfg.merge_from_file(model_zoo.get_config_file("COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml"))
cfg.MODEL.WEIGHTS = model_zoo.get_checkpoint_url("COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml")

default_trainer = DefaultTrainer(cfg)

报错信息:

URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:1091)>

requests测试代码:

import requests
response = requests.get('https://dl.fbaipublicfiles.com/detectron2/COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x/137849600/model_final_f10217.pkl')

可正常运行的wget命令:

wget https://dl.fbaipublicfiles.com/detectron2/COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x/137849600/model_final_f10217.pkl

解决方案

1. 让Python使用系统证书(推荐)

wget默认使用系统的CA证书存储,而Python(尤其是requests/urllib)可能未正确加载,可通过设置环境变量强制Python使用系统证书:

  • Linux:
    export REQUESTS_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt
    # 之后运行你的Python脚本
    
  • macOS:
    export REQUESTS_CA_BUNDLE=/usr/local/etc/openssl/cert.pem
    # 之后运行你的Python脚本
    
  • Windows:
    set REQUESTS_CA_BUNDLE=C:\Windows\System32\certificates\root\ca.pem
    # 之后运行你的Python脚本
    

2. 手动指定证书文件或使用本地权重

  • 如果知道wget使用的具体证书文件路径,可在requests中直接指定:
    import requests
    response = requests.get('https://dl.fbaipublicfiles.com/detectron2/COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x/137849600/model_final_f10217.pkl', verify='/path/to/wget/cert.pem')
    
  • 对于Detectron2,更简单的方式是先用wget下载好权重文件,然后修改配置指向本地文件:
    cfg.MODEL.WEIGHTS = "/path/to/your/downloaded/model_final_f10217.pkl"
    

3. 临时绕过SSL验证(仅测试用,不推荐生产环境)

如果只是临时测试,可关闭SSL验证,但存在安全风险:

  • requests中关闭验证:
    response = requests.get('https://dl.fbaipublicfiles.com/detectron2/COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x/137849600/model_final_f10217.pkl', verify=False)
    
  • 全局关闭Python的SSL验证(设置环境变量):
    export PYTHONHTTPSVERIFY=0
    # 之后运行Detectron2脚本
    

内容的提问来源于stack exchange,提问作者user3731622

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 07:44:16