返回 文章 apply CMS 文章

遇到依赖问题就删掉 uv.lock:Python 3.15 升级后的实用经验

升级 Python 3.15 后遇到依赖构建报错,删掉 uv.lock 再重跑通常就能解决。

Pythonuv依赖管理Python 3.15
成长分 / 100 61 综合收获、行动、留存与影响

为什么值得读了解 Python 3.15 升级后可能出现的依赖兼容问题及实际报错示例

学习库项目为何不应提交 uv.lock,以及本地残留文件带来的隐患

关键洞察
  1. 作者的大多数项目是库,库不应锁定依赖版本,因此不包含 uv.lock
  2. 运行 uv run pytest 等命令会在本地留下 uv.lock,但它被列入 .gitignore,不会提交
  3. 残留的 uv.lock 可能锁定尚无 Python 3.15 wheel 的依赖版本,从而引发构建失败
转成行动

深入阅读

正文与原文对照

原文保真覆盖:全文原文字符:930

自从切换到 Python 3.15 以来,我偶尔会遇到令人困惑的 Python 依赖错误,而我不得不记住的规则是:

如有疑问,删除 uv.lock 文件

我的大多数项目都是库,不包含 uv.lock 文件,因为库依赖为使用它的其他任何东西锁定版本是不礼貌的。

运行 uv run pytest 等往往会留下 uv.lock 文件,这些文件列在 .gitignore 中,因此不会提交到我的仓库。

但是……有时那个 uv.lock 会固定一个尚未有 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)

删除该文件并再次运行 uv run pytest 通常可以解决问题。