在 Ubuntu 24.04 的 Python 3.13 虚拟环境里 pip install tokenizers==0.20.0,拉不到 wheel 转去源码编译,卡在 Rust 工具链,提示 could not find cargo。
一开始怀疑是「pip 版本太旧 不认识新的 abi 标签」,查了一圈,方向不对。
这类报错背后常见的原因有几处,逐个排除就行。该版本没有为 cp313 发布 wheel。少数情况下是环境里没有装 Rust 工具链。
另外,安装时加了 --no-binary 强制源码编译。
先看有没有可用的 cp313 轮子
pip download tokenizers==0.20.0 --only-binary=:all: -d /tmp/w
升级 pip 后再试一次
python -m pip install -U pip
随后换有 cp313 轮子的版本
pip install "tokenizers>=0.21"
末了确实要源码装就补 Rust 工具链
curl https://sh.rustup.rs -sSf | sh -s -- -y
当时还开着另一个排查窗口,两边日志对照着看才定位到。
同一份数据我导出了两份,一份留底,一份拿来试。
这类问题以前遇到过,但这次的触发条件和上次不一样。
这类改动我都写进变更记录,过两周再出问题时能对上号。
改完先别撤,确认这几项。安装结束没有编译日志,import tokenizers 正常,版本与 transformers 的要求一致。
补一句。新 Python 小版本发布后先查 wheel 支持情况,源码编译在 CI 上要额外装 Rust,耗时也会翻几倍。如果同一现象隔几天又出现,说明根因没找到,别当偶发处理。
