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

使用pandas-datareader获取Yahoo数据时遇SSLError问题求助

解决pandas-datareader获取Yahoo金融数据时的SSLError问题

从你给出的报错信息和运行环境来看,这个SSLError的核心原因是你的32位Anaconda 3.7.3环境中缺少可用的SSL模块,导致程序无法建立HTTPS连接访问Yahoo的金融接口。下面我来拆解具体原因和可行的解决办法:

问题根源

  • 32位Python环境的SSL兼容性缺陷:较老的32位Python 3.7.3版本在SSL模块的适配性上存在不足,当系统的SSL库版本和Python编译依赖的版本不匹配时,就会出现SSL模块无法加载的情况,进而无法发起HTTPS请求。
  • Anaconda的SSL组件损坏或缺失:你的Anaconda安装过程中,openssl这类关键的SSL依赖包可能没有正确安装,或者后续使用中出现了损坏。

分步解决办法

1. 修复Anaconda的SSL组件

先尝试修复现有环境的SSL组件,打开32位的Anaconda Prompt,执行以下命令:

# 更新openssl到最新兼容版本
conda update openssl
# 强制重新安装openssl,确保组件完整
conda install -c anaconda openssl --force-reinstall

完成后重启你的Pycharm解释器,再运行代码测试是否解决问题。

2. 切换到64位Anaconda环境(推荐)

32位Python环境在现代操作系统上的兼容性越来越差,很多第三方库对32位的支持已经逐步停止。更彻底的解决办法是:

  1. 卸载当前的32位Anaconda 3.7.3
  2. 下载对应版本的64位Anaconda 3.7.3进行安装
  3. 重新安装pandas-datareader:
    conda install pandas-datareader
    

64位环境的SSL支持通常更稳定,能从根源上避免这类兼容性问题。

3. 临时绕过SSL验证(仅测试用)

如果你只是临时需要测试代码,可以临时关闭SSL验证,但这会带来安全风险,绝对不要在生产环境使用。修改代码如下:

import pandas_datareader.data as web
import datetime
import requests
from requests.packages.urllib3.exceptions import InsecureRequestWarning

# 禁用SSL验证警告
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
# 创建关闭SSL验证的会话
session = requests.Session()
session.verify = False

start = datetime.datetime(2016, 2, 19)
end = datetime.datetime(2016, 2, 22)
# 传入自定义会话
gs = web.DataReader("078930.KS", "yahoo", start, end, session=session)

额外提示

Yahoo Finance的接口在近几年有过多次调整,旧版本的pandas-datareader可能存在兼容性问题,建议同时更新到最新版本:

pip install --upgrade pandas-datareader

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:43:58