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

Docker构建失败:tokenizers 0.10.3编译报错(cargo rustc错误码101)

解决tokenizers 0.10.3在Rust 1.66.1下编译失败的问题

问题分析

tokenizers 0.10.3的底层Rust代码存在将&T强制转换为&mut T的操作,这属于Rust规范中的未定义行为。近期工具链检测逻辑的严格化(或依赖源的隐性变更)触发了该问题,导致cargo rustc编译失败,无法生成wheel文件。

可行解决方案

1. 用预编译wheel跳过源码编译

直接安装预编译的二进制包,避免从Rust源码编译:

  • 修改pyproject.toml中的tokenizers依赖配置,强制使用预编译版本:
    tokenizers = { version = "0.10.3", platform = "linux_x86_64", prefer-binary = true }
    
  • 或者在poetry install前,先通过pip安装预编译wheel:
    pip install tokenizers==0.10.3 --only-binary :all:
    poetry install --with main,dev
    

2. 确保Docker中Rust版本严格锁定为1.66.1

检查Dockerfile的Rust安装命令,防止自动升级到更高版本:

  • 正确的安装命令示例:
    RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain 1.66.1
    ENV PATH="/root/.cargo/bin:${PATH}"
    
  • 安装后验证版本:
    rustc --version # 预期输出:rustc 1.66.1 (90743e729 2023-01-10)
    

3. 升级tokenizers到兼容新版本

tokenizers 0.10.x版本较旧,后续版本已修复此类编译问题。尝试升级到与transformers 4.8.2兼容的版本:

  • 修改pyproject.toml中的依赖:
    tokenizers = ">=0.13.0,<0.14.0"
    
  • 更新依赖锁文件并重新安装:
    poetry lock --no-update
    poetry install --with main,dev
    
    注:transformers 4.8.2与tokenizers 0.13.x版本兼容性良好,无需修改transformers版本

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 05:16:02