如有疑问,请删除 uv.lock 文件
摘要
Simon Willison 分享了一个适用于使用 uv 的 Python 项目的故障排查技巧:当出现令人困惑的依赖构建错误时(例如,固定版本的依赖缺少适用于 Python 3.15 的 wheel 包),只需删除 uv.lock 文件,然后重新运行命令即可。
暂无内容
查看缓存全文
缓存时间: 2026/11/02 03:24
# 如有疑问,删除 uv.lock 文件
来源:https://simonwillison.net/2026/Nov/1/delete-uv-lock-first/
2026年11月1日
自从切换到 Python 3\.15 以来,我偶尔会遇到令人困惑的 Python 依赖错误,因此我得记住这条规则:
**如有疑问,删除 uv\.lock 文件**
我的大多数项目都是库,不包含`uv\.lock`文件,因为作为依赖项的库若替使用它的其他项目锁定版本,是不礼貌的做法。
运行`uv run pytest`等命令往往会留下`uv\.lock`文件,这些文件列在`\.gitignore`中,因此不会被提交到我的代码仓库。
但是……有时这个`uv\.lock`会将某个依赖锁定在尚未提供 Python 3\.15 wheel 的版本上。今天早些时候就有一个例子:
``
错误:无法构建 `watchfiles==1.1.1`
原因:调用 `maturin.build_wheel` 失败
错误:配置的 Python 解释器版本(3.15)高于
PyO3 支持的最高版本(3.14)
``
删除该文件并再次运行`uv run pytest`通常就能解决问题。
相似文章
@charliermarsh:在最新版 uv 中,现在可以直接从 uv 锁文件安装,无需 pyproject.toml。此设计旨在……
最新版 uv 现在支持直接从 uv 锁文件安装,无需 pyproject.toml,从而实现更高效的 Docker/CI 层缓存,因为依赖层不再因 pyproject.toml 的变更而失效。
uv 0.12.0
uv 0.12.0 对 `uv init` 引入了破坏性变更,默认采用 `src/` 为基础的项目结构,配置 uv_build 后端,并设置脚本别名。该更新鼓励使用现代 Python 项目结构。
恳请不要使用 uv-build
Gentoo 开发者 Michał Górny 呼吁 Python 包维护者不要将 uv-build 作为构建后端,他指出其庞大的 Rust 二进制依赖为下游打包者带来了可移植性和构建时间上的负担,而相比 flit-core 等轻量级纯 Python 构建后端并无实质优势。
@charliermarsh: 预览版中,uv 将从锁文件中省略包元数据。(这与已解析的依赖图分开,……)
在预览版中,uv 将省略锁文件中的包元数据,平均减少锁文件大小最多 50%,并降低冲突。
@charliermarsh: 在预览版中,`uv tool install` 现在将为每个工具写入一个 `uv.lock` 锁文件,与安装本身一起。
在预览版中,uv tool install 现在会在安装过程中为每个工具写入一个 uv.lock 锁文件。