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

使用MLflow记录模型时遭遇UnicodeDecodeError错误求助

解决MLflow记录模型时的UnicodeDecodeError(依赖推断阶段)

问题诊断

报错堆栈显示,MLflow在执行依赖推断的子命令时,尝试用UTF-8解码标准错误输出(stderr)失败,字节0xe9通常对应中文或其他非ASCII字符。大概率是你的Python环境路径、系统用户路径包含中文,导致子命令输出的路径信息无法用UTF-8解码。

解决办法

1. 手动指定pip依赖(推荐)

直接在mlflow.sklearn.log_model中通过pip_requirements参数传入明确的依赖列表,跳过MLflow的自动依赖推断逻辑:

# 替换原有的log_model代码
if tracking_url_type_store != "file":
    mlflow.sklearn.log_model(
        lr, 
        "model", 
        registered_model_name="ElasticnetWineModel",
        pip_requirements=["scikit-learn==1.0.2", "cloudpickle==2.1.0"]  # 可添加其他项目依赖
    )
else:
    mlflow.sklearn.log_model(
        lr, 
        "model",
        pip_requirements=["scikit-learn==1.0.2", "cloudpickle==2.1.0"]
    )

2. 修改MLflow源码临时修复

找到虚拟环境中的requirements_utils.py文件(路径:D:\_verse\test_mlflow\lib\site-packages\mlflow\utils\requirements_utils.py),修改第208行的解码逻辑:
将原代码:

stderr = stderr.decode("utf-8")

替换为以下任一方式:

  • 方式一:使用系统默认编码解码
import locale
stderr = stderr.decode(locale.getpreferredencoding())
  • 方式二:指定中文编码并忽略错误
stderr = stderr.decode("gbk", errors="replace")

3. 更换无中文路径的Python环境

重新创建一个路径全为英文的虚拟环境(例如D:\venvs\mlflow_env),安装MLflow、scikit-learn等依赖后,在新环境中运行代码,从根源避免路径中的非ASCII字符引发编码问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 09:35:35