如何在PyCharm中下载sklearn数据集?遇SSL证书过期错误求解
解决sklearn fetch_openml SSL证书过期问题
出现的urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:1002)错误,是因为OpenML的SSL证书过期,或者本地系统的SSL证书链不完整导致验证失败。以下是几种可行的解决办法:
临时禁用SSL验证(快速测试用)
修改代码,给fetch_openml添加verify=False参数,跳过证书验证:from sklearn.datasets import fetch_openml mnist = fetch_openml('mnist_784', as_frame=False, verify=False) X, y = mnist.data, mnist.target注意:这个方法仅适合临时测试,跳过SSL验证会降低安全性,不建议在正式环境使用。
更新本地SSL证书(推荐长期解决)
根据你的操作系统进行操作:- Windows:打开「设置」→「更新和安全」→「Windows更新」,检查并安装所有可选更新,重点是证书相关的更新。
- macOS:打开「应用程序/实用工具/钥匙串访问」,找到已过期的SSL证书删除;或者找到你安装的Python目录,运行
Install Certificates.command脚本(比如路径是/Applications/Python 3.11/Install Certificates.command,替换成你的Python版本)。 - Linux(Ubuntu/Debian):在终端执行以下命令重新安装CA证书:
sudo apt update && sudo apt install --reinstall ca-certificates
指定自定义CA证书路径
如果你有可用的CA证书文件,可以在fetch_openml中指定证书路径,比如:mnist = fetch_openml('mnist_784', as_frame=False, verify="/path/to/your/ca-cert.pem")
另外,如果你使用了代理网络,检查代理设置是否拦截了SSL证书,尝试切换到直连网络再测试。
内容的提问来源于stack exchange,提问作者Bread Crumbs
相关产品推荐
相关产品推荐

