Linux安装transformers==3.4.0遇tokenizers编译Cargo版本兼容错误
解决transformers==3.4.0安装时的Rust Edition编译错误
问题根源
安装transformers3.4.0时,其依赖的tokenizers0.9.2在编译过程中会自动拉取once_cell v1.17.1,该版本使用了Rust 2021 Edition,而你的Cargo环境因依赖缓存或版本解析问题,无法处理该Edition的配置,导致编译失败。
可行解决方案
方案1:安装预编译的tokenizers包,跳过编译
直接强制使用预编译wheel,避免Rust编译步骤:
# 先安装兼容的tokenizers预编译包 pip install tokenizers==0.9.2 --only-binary=:all: # 再安装transformers pip install transformers==3.4.0
如果命令找不到对应wheel,可手动下载对应Python版本和系统的.whl文件(比如Python3.9对应tokenizers-0.9.2-cp39-cp39-manylinux2010_x86_64.whl),再执行pip install 文件名。
方案2:强制限制once_cell版本为兼容旧Edition的版本
创建constraints.txt文件,内容如下:
once_cell<1.16.0
然后通过约束文件安装:
pip install transformers==3.4.0 -c constraints.txt
once_cell 1.16.0及之前版本使用Rust 2018 Edition,可兼容你的Cargo环境。
方案3:清理Cargo缓存后重新尝试
若缓存的once_cell包导致解析错误,清理缓存后重新安装:
# 删除缓存的once_cell包 rm -rf ~/.cargo/registry/src/github.com-1ecc6299db9ec823/once_cell-* # 重新安装transformers pip install transformers==3.4.0
方案4:手动修改tokenizers的编译配置
- 下载tokenizers源码包:
pip download tokenizers==0.9.2
- 解压并进入源码目录:
tar -xzf tokenizers-0.9.2.tar.gz && cd tokenizers-0.9.2
- 编辑根目录的
Cargo.toml,在顶部添加:
edition = "2018"
- 编译安装修改后的包:
pip install .
内容的提问来源于stack exchange,提问作者11D
相关产品推荐
相关产品推荐

