在Udacity的Jupyter环境使用wptools出现SSL证书过期错误的求助
报错原因与解决方案
问题原因
error: (60, 'SSL certificate problem: certificate has expired')
该报错是wptools底层依赖的pycurl库发起HTTPS请求时,Udacity Jupyter环境内置的CA根证书未包含维基百科当前使用的证书签发机构的根证书,导致校验失败。
解决方案
方案1:临时关闭SSL校验(最快适配学习环境)
直接运行以下代码即可覆盖原有请求逻辑跳过SSL校验:
import wptools import pycurl from io import BytesIO from wptools.request import curl_info # 补丁:修改wptools请求逻辑跳过SSL证书校验 def patched_curl_perform(self, crl): # 关闭SSL校验 crl.setopt(pycurl.SSL_VERIFYPEER, 0) crl.setopt(pycurl.SSL_VERIFYHOST, 0) bfr = BytesIO() crl.setopt(crl.WRITEFUNCTION, bfr.write) crl.perform() info = curl_info(crl) if info and self.show: import json print(json.dumps(info, indent=2)) return bfr.getvalue() from wptools.request import WPToolsRequest WPToolsRequest.curl_perform = patched_curl_perform # 执行原有逻辑 page = wptools.page('E.T._the_Extra-Terrestrial').get()
方案2:升级环境依赖(治本)
在Jupyter单元格中执行以下命令更新证书和依赖库:
!sudo update-ca-certificates !pip install --upgrade pycurl certifi wptools
执行完成后再运行原有代码即可。
方案3:替换工具库(同时解决Windows本地安装问题)
wptools依赖pycurl,对系统环境要求较高,可换成无系统依赖的wikipedia-api库,Windows和Udacity环境都能直接安装使用:
- 安装库:
!pip install wikipedia-api
- 使用示例:
import wikipediaapi wiki = wikipediaapi.Wikipedia('en') page = wiki.page('E.T._the_Extra-Terrestrial') # 可直接获取页面摘要、正文、链接等信息 print(page.summary)
Windows本地安装wptools失败解决方法
安装失败通常是因为缺少pycurl的编译依赖,可直接安装预编译的pycurl包,或者直接使用上面提到的wikipedia-api替代,无需额外配置就能直接安装使用。
内容的提问来源于stack exchange,提问作者Khaled Atya
相关产品推荐
相关产品推荐

