升级 Python 后依赖构建失败?检查 uv.lock

发布于

问题可能出在旧锁文件

切换到 Python 3.15 后,使用 uv 运行测试时,可能遇到看似难以理解的依赖构建错误。一个值得检查的地方是:本地是否遗留了旧的 uv.lock 文件。

在这个案例中,项目以 Python 库为主,不将 uv.lock 提交到仓库。运行 uv run pytest 等命令仍会生成锁文件,只是这些文件被列入 .gitignore,容易在后续排查中被忽略。

一个具体报错

本地锁文件固定了 watchfiles==1.1.1,该版本没有适用于 Python 3.15 的 wheel,随后构建失败:

error: Failed to build `watchfiles==1.1.1`
cause: Call to `maturin.build_wheel` failed
error: the configured Python interpreter version (3.15) is newer than PyO3's maximum supported version (3.14)

报错的关键是:当前解释器为 Python 3.15,而构建所用的 PyO3 最高支持 Python 3.14。

可以尝试的排查步骤

对于这类不提交锁文件、却在本地保留了旧锁文件的项目,可以尝试删除 uv.lock,然后重新执行:

uv run pytest

这一案例中的经验是,重新生成锁文件通常能解决问题。

但这不意味着所有依赖构建错误都应靠删除锁文件解决:这里针对的是旧锁文件固定了不兼容依赖版本的情况,而非通用修复方案。

浏览(13)
评论

请登录后发表观点

暂无数据