0

0

解决 tokenizers==0.12.1 安装与 Rust 兼容性问题的教程

DDD

DDD

发布时间:2025-09-16 19:10:01

|

335人浏览过

|

来源于php中文网

原创

解决 tokenizers==0.12.1 安装与 Rust 兼容性问题的教程

本文旨在解决 tokenizers 包特定版本(如 0.12.1)在较新 Rust 编译器环境下安装失败的问题。核心原因在于 Rust 编译器的严格性更新导致旧版 tokenizers 代码不再兼容。教程提供了两种主要解决方案:一是升级 tokenizers 及其相关依赖(如 transformers)到兼容版本;二是临时性地通过设置环境变量来使用旧版 Rust 工具链进行编译。

tokenizers 包安装与 Rust 兼容性问题分析

在使用 pip install tokenizers==0.12.1 命令尝试安装 tokenizers 包时,用户可能会遇到编译错误,尤其是在使用 python 3.6.15 和 rust 1.72.0 或更高版本时。这类错误通常表现为 rust 编译器的警告和错误信息,例如关于可变变量(mutable)的警告和更关键的“将 &t 转换为 &mut t 是未定义行为”的类型转换错误。

warning: variable does not need to be mutable
     --> tokenizers-lib\src\models\unigram\model.rs:265:21
      |
  265 |                 let mut target_node = &mut best_path_ends_at[key_pos];
      |                     ----^^^^^^^^^^^
      |                     |
      |                     help: remove this `mut`
  ...
  error: casting `&T` to `&mut T` is undefined behavior, even if the reference is unused, consider instead using an `UnsafeCell`
     --> tokenizers-lib\src\models\bpe\trainer.rs:526:47
      |
  522 |                     let w = &words[*i] as *const _ as *mut _;
      |                             -------------------------------- casting happened here
  ...
  526 |                         let word: &mut Word = &mut (*w);
      |                                               ^^^^^^^^^
      |
      = note: for more information, visit 
      = note: `#[deny(invalid_reference_casting)]` on by default

warning: `tokenizers` (lib) generated 3 warnings
error: could not compile `tokenizers` (lib) due to the previous error; 3 warnings emitted

这些错误的核心原因是 Rust 编译器在 1.73.0 版本左右变得更加严格,对某些不安全或潜在未定义行为的类型转换进行了限制。旧版本的 tokenizers 代码中存在此类转换,导致在新版 Rust 编译器下无法通过编译。tokenizers 官方已在 0.14.1 及更高版本中修复了这些兼容性问题。

解决方案一:升级 tokenizers 及其相关依赖

最推荐的解决方案是升级 tokenizers 包到兼容新版 Rust 编译器的版本。然而,这通常会带来依赖链上的变化,特别是对于依赖 tokenizers 的其他库,例如 transformers。

  1. 升级 tokenizers 版本: 将 tokenizers 升级到 0.14.1 或更高版本,这些版本已经修复了与新版 Rust 编译器的兼容性问题。

    pip install tokenizers>=0.14.1
  2. 同步升级 transformers 版本: 如果你的项目依赖于 transformers 库,并且它要求旧版 tokenizers(例如 transformers==4.19.1 可能要求 tokenizers=4.36 通常与 tokenizers>=0.14.1 兼容。

    pip install transformers>=4.36 tokenizers>=0.14.1
  3. 修改 requirements.txt 文件: 如果你的项目使用 requirements.txt 文件管理依赖,你需要修改文件中对应的行:

    - tokenizers==0.12.1
    - transformers==4.19.1
    + tokenizers>=0.14.1
    + transformers>=4.36

    然后重新安装依赖:

    pip install -r requirements.txt

注意事项:

  • 在升级核心依赖库时,务必进行充分的测试,以确保项目的功能不受影响。某些旧项目可能与新版本的库不完全兼容。
  • 如果你的项目强制要求使用特定旧版本的 tokenizers,并且无法升级,那么可能需要考虑第二种解决方案。

解决方案二:使用旧版 Rust 工具链(临时性方案)

如果项目对 tokenizers 的版本有严格限制,无法升级,你可以通过强制使用一个较旧的、对代码检查不那么严格的 Rust 编译器版本来绕过这个问题。这可以通过设置 RUSTUP_TOOLCHAIN 环境变量来实现。

  1. 确认兼容的 Rust 版本: 根据 tokenizers 官方社区的讨论,Rust 1.72.1 或更早版本可能不会出现此编译错误。你可以尝试使用这些版本。

  2. 安装特定 Rust 工具链: 如果你还没有安装 rustup,请先安装它。然后使用 rustup 安装一个旧版工具链。例如,安装 1.72.1 版本:

    rustup install 1.72.1
  3. 设置 RUSTUP_TOOLCHAIN 环境变量: 在执行 pip install 命令之前,将 RUSTUP_TOOLCHAIN 环境变量设置为你希望使用的旧版 Rust 工具链。

    • Linux/macOS:

      Interior AI
      Interior AI

      AI室内设计,上传室内照片自动帮你生成多种风格的室内设计图

      下载
      export RUSTUP_TOOLCHAIN=1.72.1
      pip install tokenizers==0.12.1
      unset RUSTUP_TOOLCHAIN # 安装完成后可以取消设置
    • Windows (Command Prompt):

      set RUSTUP_TOOLCHAIN=1.72.1
      pip install tokenizers==0.12.1
      set RUSTUP_TOOLCHAIN= # 安装完成后可以取消设置
    • Windows (PowerShell):

      $env:RUSTUP_TOOLCHAIN="1.72.1"
      pip install tokenizers==0.12.1
      Remove-Item Env:\RUSTUP_TOOLCHAIN # 安装完成后可以取消设置

注意事项:

  • 这种方法是临时的解决方案,不推荐作为长期策略。因为它依赖于一个过时的 Rust 工具链,可能无法获得最新的性能优化、安全补丁或语言特性。
  • 每次需要编译依赖 Rust 的旧版 Python 包时,都可能需要重复设置此环境变量。
  • 确保你安装的旧版 Rust 工具链与你的系统兼容。

总结

当遇到 tokenizers 包因 Rust 编译器兼容性问题而安装失败时,首选且最稳健的解决方案是升级 tokenizers 及其相关的 Python 依赖(如 transformers)到最新且兼容的版本。如果项目存在严格的版本限制,无法升级 tokenizers,则可以考虑临时性地通过设置 RUSTUP_TOOLCHAIN 环境变量来使用一个旧版的 Rust 编译器进行编译。无论采用哪种方法,都应在生产环境部署前进行充分的测试,以确保项目的稳定性和功能完整性。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
C++系统编程内存管理_C++系统编程怎么与Rust竞争内存安全
C++系统编程内存管理_C++系统编程怎么与Rust竞争内存安全

C++系统编程中的内存管理是指 对程序运行时内存的申请、使用和释放进行精细控制的机制,涵盖了栈、堆、静态区等不同区域,开发者需要通过new/delete、智能指针或内存池等方式管理动态内存,以避免内存泄漏、野指针等问题,确保程序高效稳定运行。它核心在于开发者对低层内存有完全控制权,带来灵活性,但也伴随高责任,是C++性能优化的关键。

10

2025.12.22

pip安装使用方法
pip安装使用方法

安装步骤:1、确保Python已经正确安装在您的计算机上;2、下载“get-pip.py”脚本;3、按下Win + R键,然后输入cmd并按下Enter键来打开命令行窗口;4、在命令行窗口中,使用cd命令切换到“get-pip.py”所在的目录;5、执行安装命令;6、验证安装结果即可。大家可以访问本专题下的文章,了解pip安装使用方法的更多内容。

339

2023.10.09

更新pip版本
更新pip版本

更新pip版本方法有使用pip自身更新、使用操作系统自带的包管理工具、使用python包管理工具、手动安装最新版本。想了解更多相关的内容,请阅读专题下面的文章。

412

2024.12.20

pip设置清华源
pip设置清华源

设置方法:1、打开终端或命令提示符窗口;2、运行“touch ~/.pip/pip.conf”命令创建一个名为pip的配置文件;3、打开pip.conf文件,然后添加“[global];index-url = https://pypi.tuna.tsinghua.edu.cn/simple”内容,这将把pip的镜像源设置为清华大学的镜像源;4、保存并关闭文件即可。

761

2024.12.23

python升级pip
python升级pip

本专题整合了python升级pip相关教程,阅读下面的文章了解更多详细内容。

349

2025.07.23

C++类型转换方式
C++类型转换方式

本专题整合了C++类型转换相关内容,想了解更多相关内容,请阅读专题下面的文章。

299

2025.07.15

windows查看端口占用情况
windows查看端口占用情况

Windows端口可以认为是计算机与外界通讯交流的出入口。逻辑意义上的端口一般是指TCP/IP协议中的端口,端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于FTP服务的21端口等等。怎么查看windows端口占用情况呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

760

2023.07.26

查看端口占用情况windows
查看端口占用情况windows

端口占用是指与端口关联的软件占用端口而使得其他应用程序无法使用这些端口,端口占用问题是计算机系统编程领域的一个常见问题,端口占用的根本原因可能是操作系统的一些错误,服务器也可能会出现端口占用问题。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

1128

2023.07.27

Python 自然语言处理(NLP)基础与实战
Python 自然语言处理(NLP)基础与实战

本专题系统讲解 Python 在自然语言处理(NLP)领域的基础方法与实战应用,涵盖文本预处理(分词、去停用词)、词性标注、命名实体识别、关键词提取、情感分析,以及常用 NLP 库(NLTK、spaCy)的核心用法。通过真实文本案例,帮助学习者掌握 使用 Python 进行文本分析与语言数据处理的完整流程,适用于内容分析、舆情监测与智能文本应用场景。

22

2026.01.27

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 7.9万人学习

Git 教程
Git 教程

共21课时 | 3.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号