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

安装Django项目requirements.txt报UnicodeDecodeError如何解决

报错根因

安装失败的触发点是第三方依赖django-localized-names的旧版本安装脚本setup.py存在编码兼容问题:脚本读取README.rst文件时没有显式指定文件编码,在Windows环境下Python会默认调用系统本地编码(从报错栈看你的系统默认编码是cp1251西里尔编码),无法解析README文件中0x98位置的特殊字符,最终触发UnicodeDecodeError。
这个问题和pip、pipenv/venv虚拟环境工具本身没有关系,Linux/macOS系统默认全局使用UTF-8编码,不会触发同类报错。

可按优先级尝试以下修复方案

方案1:临时启用Python UTF-8模式安装(最简便)

在激活虚拟环境的终端中,先设置全局UTF-8编码环境变量,再执行依赖安装命令即可绕过问题:

  • 若使用CMD命令行:
set PYTHONUTF8=1
pip install -r requirements.txt
  • 若使用PowerShell命令行:
$env:PYTHONUTF8=1
pip install -r requirements.txt

该环境变量仅对当前终端窗口生效,不会修改系统全局配置,强制Python所有文件读写操作默认使用UTF-8编码,刚好覆盖setup.py缺失编码参数的场景。

方案2:手动修复问题包的安装脚本

如果方案1执行后仍报错,可以手动修复安装脚本后本地安装问题包:

  • 先下载对应版本的django-localized-names源码包并解压到本地
  • 打开解压目录下的setup.py文件,找到read函数的文件打开语句,修改为显式指定UTF-8编码:
    # 原代码
    return open(os.path.join(os.path.dirname(__file__), fname)).read()
    # 修改后
    return open(os.path.join(os.path.dirname(__file__), fname, encoding='utf-8')).read()
    
  • 在解压目录下执行pip install .完成该包的本地安装
  • 回到项目根目录重新执行pip install -r requirements.txt,pip检测到该依赖已安装,会跳过拉取安装步骤,不会再触发编码报错。

方案3:升级问题包到修复版本

检查项目requirements.txt中django-localized-names的版本锁定规则,如果锁的是0.2.x及更早的老旧版本,可以直接将版本号修改为最新正式版,新版本已经修复了setup.py未指定编码的兼容问题,直接执行安装即可正常完成。

注意:无需反复重建虚拟环境排查问题,该问题和虚拟环境隔离逻辑无关,仅为Windows环境下旧第三方包的编码兼容缺陷。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 15:09:18