You need to enable JavaScript to run this app. Windows终端执行py命令启动Python时出现UnicodeDecodeError报错是什么原因
优惠活动
大模型
产品
解决方案
定价
更多

Windows终端执行py命令启动Python时出现UnicodeDecodeError报错是什么原因

报错原因

这个报错是Windows平台下pyreadline模块读取Python交互式命令历史文件时编码不匹配导致的:

  • Python启动交互模式时会自动调用pyreadline读取用户目录下的.python_history历史记录文件
  • pyreadline默认调用Windows系统编码(你当前环境为cp1254编码)打开文件,当历史记录中存在该编码无法解析的字符时,就会触发UnicodeDecodeError

解决方案

方案1:删除历史记录文件(快速生效)

直接删除用户目录下的.python_history文件,完整路径为C:\Users\blackbird\.python_history,该文件默认是隐藏属性,需要先开启Windows的隐藏文件可见选项才能找到。删除后重新启动Python即可恢复正常,该操作仅会清除过往的交互命令历史,不影响Python其他功能。

方案2:修改pyreadline源码兼容编码

打开报错提示的历史读取文件:C:\Users\blackbird\AppData\Local\Programs\Python\Python38\lib\site-packages\pyreadline\lineeditor\history.py,找到第82行的代码:

for line in open(filename, 'r'):

修改为:

for line in open(filename, 'r', encoding='utf-8', errors='ignore'):

修改后重启Python即可,后续读取历史文件时会强制使用UTF-8编码,无法解析的异常字符会直接忽略,不会再触发报错。

方案3:卸载pyreadline模块

如果你不需要pyreadline提供的交互式命令增强功能,可以直接执行命令卸载该模块:

pip uninstall pyreadline

卸载后Python交互模式将使用默认的历史读取逻辑,不会再触发该报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 00:39:03