导入Python库时出现'utf-8' codec can't decode byte 0x9c报错如何解决?
问题复现
执行以下导入代码时触发编码报错:
from sklearn.model_selection import train_test_split from nltk.tokenize import word_tokenize
完整报错信息:
'utf-8' codec can't decode byte 0x9c in position 3057: invalid start byte
错误原因排查
- 第三方包安装文件损坏:下载安装过程中网络波动、中断,导致包的源码或元数据文件出现损坏字节,加载时无法用utf-8正常解码。
- 系统默认编码不匹配:Windows系统默认编码多为GBK/GB2312,Python读取包配置文件时默认调用系统编码,和utf-8编码的包文件产生冲突。
- 缓存文件损坏:之前卸载/更新包时残留了不完整的
__pycache__缓存文件,导入时优先读取损坏的缓存触发报错。
可行解决办法
- 重装损坏的第三方包
先执行卸载命令:pip uninstall scikit-learn nltk -y
再重新安装,可使用国内合规镜像源加速,避免下载文件损坏:pip install scikit-learn nltk - 强制指定Python使用UTF-8编码
Python2环境可在导入代码顶部添加:
Python3环境可在运行脚本前设置环境变量:import sys reload(sys) sys.setdefaultencoding('utf-8')
Windows CMD执行:set PYTHONUTF8=1
Linux/macOS终端执行:export PYTHONUTF8=1 - 清除残留缓存
找到Python环境的site-packages目录,删除scikit_learn、nltk对应的文件夹以及所有__pycache__目录后重新安装包。 - 调整系统区域编码(Windows专属)
进入「控制面板→区域→管理→更改系统区域设置」,勾选「Beta版:使用Unicode UTF-8提供全球语言支持」,重启设备后重试。
内容的提问来源于stack exchange,提问作者Prayag Sheth
相关产品推荐
相关产品推荐

