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

Python Keyring调用报错OSError: [WinError 8] 内存资源不足问题求助

问题解决方案

根因说明

该报错是win32ctypes库调用Windows系统CredWrite接口时的已知内存泄漏问题,和系统实际内存大小、Python版本无关:每次调用写入接口后未正确释放资源句柄,重复调用就会触发资源不足错误,重启后资源被系统回收所以首次运行正常。

可用解决方案

  • 方案一:替换依赖为原生pywin32
    卸载现有相关依赖后重新安装,让keyring优先调用更稳定的原生win32接口,执行命令:
pip uninstall -y keyring win32ctypes
pip install pywin32 keyring

该方案适配所有新版keyring,是首选修复方案。

  • 方案二:降级keyring到无问题版本
    keyring 23.2.1及更早版本默认使用pywin32实现,未引入win32ctypes依赖,可直接降级:
pip install keyring==23.2.1
  • 方案三:写入前先删除旧凭据(临时适配)
    如果不想修改依赖,可在每次写入密码前先尝试删除同服务+用户名的旧凭据,绕过资源占用问题,代码示例:
import keyring

# 写入前先清理旧凭据
try:
    keyring.delete_password("test", "a")
except keyring.errors.PasswordDeleteError:
    # 无对应旧凭据时直接跳过
    pass

keyring.set_password("test", "a", "b")
  • 方案四:调整Windows凭据管理器配置
    按下Win+R输入gpedit.msc打开组策略编辑器,依次进入「计算机配置 > Windows 设置 > 安全设置 > 本地策略 > 安全选项」,找到「网络访问:不允许存储用于网络身份验证的密码和凭据」项,确认其状态为禁用;同时检查当前系统存储的凭据总数不超过2000条,超过上限也会触发同类报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 10:45:03