uv 0.12.0
摘要
uv 0.12.0 对 `uv init` 引入了破坏性变更,默认采用 `src/` 为基础的项目结构,配置 uv_build 后端,并设置脚本别名。该更新鼓励使用现代 Python 项目结构。
暂无内容
查看缓存全文
缓存时间: 2026/07/28 22:24
# uv 0.12.0
来源:https://simonwillison.net/2026/Jul/28/uv/
2026年7月28日 \- 链接博客
**uv 0.12.0 (https://github.com/astral-sh/uv/releases/tag/0.12.0)**。本次`uv`版本引入了一些有趣的破坏性变更,尤其是`uv init`命令生成的默认项目结构。
uv init (https://docs.astral.sh/uv/concepts/projects/init/) 是`uv`中用于创建新项目的快捷方式。上一个版本`uv` 0.11.x,当运行`uv init uv-init`时会生成此目录 (https://github.com/simonw/uv-init-demos/tree/29656a55ec733a632005abfd7b89dea5c04fa10b/uv-init) 。
以下是 uv 0.12 (https://github.com/simonw/uv-init-demos/tree/9111a2bb85741f034eee2fd63efe13ef98b37a14/uv-init) 的输出。我有一个 GitHub 仓库会自动快照 (https://simonwillison.net/2025/Dec/24/uv-init-demos/) `uv init`的输出,所以你也可以查看完整差异 (https://github.com/simonw/uv-init-demos/commit/9111a2bb85741f034eee2fd63efe13ef98b37a14#diff-e036881d034aedd813010ffa96464995ae5b0339213d6f4ab492f97442c5bdd4):
GitHub diff 视图。uv-init/main.py 是一个旧的 `__name__=="__main__"` 文件,已被完全删除。pyproject.toml 现在包含作者列表和一个新的 project.scripts 块,将 uv-init 定义为 uv_init:main —— 以及一个使用 uv_build 作为构建后端的新 build-system 块。新增的 src/uv_init/__init__.py 文件包含一个带有 `-> None` 类型注解的 main() 方法,打印 Hello from uv-init。
`uv init` 现在默认生成一个 `src/` 结构的包,而不是将 `main.py` 放在项目的根目录下。它还配置了 uv_build 后端 (https://docs.astral.sh/uv/concepts/build-backend/) 用于当你运行 `uv build` 时构建 wheel 和 `.tar.gz` 分发文件。最后,它设置了 `uv-init` 作为脚本别名,当你运行 `uv run uv-init` 时,会执行 `src/uv_init/__init__.py` 中的新 `main()` 函数。
到目前为止,我一直出于惯性避免在自己的项目中使用 src 布局 (https://packaging.python.org/en/latest/discussions/src-layout-vs-flat-layout/)。我想是时候切换了。
我好奇 `uv` 何时才会被认为准备好发布 1.0 版本?
相似文章
Uv 0.12.0
uv 0.12.0 是极速 Python 包和项目管理器的一个重大版本,该管理器用 Rust 编写,旨在替代 pip, pip-tools, pipx, poetry, pyenv, twine, virtualenv 等工具。
@charliermarsh: 宣布 uv audit:原生支持扫描项目依赖中的漏洞
Charlie Marsh 宣布推出 uv audit,这是 uv 包管理器中用于项目依赖的原生漏洞扫描功能。
@charliermarsh: 在预览版中,`uv tool install` 现在将为每个工具写入一个 `uv.lock` 锁文件,与安装本身一起。
在预览版中,uv tool install 现在会在安装过程中为每个工具写入一个 uv.lock 锁文件。
uv 中的漏洞和恶意软件检查
uv 宣布新的安全功能:快速的依赖审计命令(uv audit)以及同步操作中的可选恶意软件扫描,两者目前均为预览版。
从 uv 迁移到 PDM
开发者分享将 Python 项目从 uv 迁移到 PDM 的经验,强调 PDM 纯 Python 代码库、刚发布的 2.26.8 版带来的“相对时间依赖冷却”功能,以及更强大的项目管理特性。