uv 0.12.0
于2026年7月28日发布。自从我们在三月发布uv 0.11.0以来,积累了改善正确性、安全性和与规范兼容性的变化,但可能会破坏某些工作流。此版本包含这些变化;许多已被标记为破坏性变更,以示谨慎。我们预计大多数用户能够在不进行更改的情况下升级。uv构建后端的配置没有破坏性变更。如果您的[build-system]表包括对uv_build的上限,请更新以允许uv_build 0.12,例如,uv_build>=0.11.32,<0.13。 默认使用uv init定义构建系统(#19197)。使用uv init创建的项目现在声明一个构建系统,并默认打包。这是v0.3时代的默认项目布局,但我们发现使用hatchling构建系统对新手来说很困惑,因此在v0.4中放弃了默认使用构建系统。从那时起,我们创建了自己的构建系统(uv_build),与uv紧密集成,兴奋地将默认恢复为最佳实践项目布局。之前,uv init示例创建了一个未打包的布局,包含main.py和没有构建系统的pyproject.toml。项目可以声明依赖关系,但未被安装到其虚拟环境中。现在,uv init示例使用uv_build定义了一个[build-system],将应用程序源代码放置在src/example中,并包括名为example的[project.scripts]条目。定义构建系统使项目可以从测试或其他代码中导入,作为依赖项安装,并作为命令运行:$ uv init example $ cd example $ uv run example Hello from example! 现有项目不受影响。使用uv init --no-package example创建以前没有构建系统的未打包布局。有关更多详细信息,请参见项目创建文档。这稳定了打包初始化预览功能。拒绝不支持的源分发和Wheel归档格式(#18927)。PEP 625要求源分发使用.tar.gz归档。之前,uv还接受遗留格式如.tar.bz2和.tar.xz。这些格式现已被拒绝,包括当由现有锁定文件引用时。为向后兼容,遗留.zip源分发仍然受到支持。Wheel和其他ZIP归档不再包含使用bzip2、LZMA或XZ压缩的条目。条目必须使用存储、DEFLATE或zstd压缩方法。移除对不常用压缩方法的支持减少了uv的压缩依赖性及在处理不受信任包时暴露的攻击面。您无法选择退出此行为。如果您依赖使用不支持格式的遗留源分发,我们建议将其重建为.tar.gz归档,并重新生成任何包含对遗留归档引用的锁定文件。拒绝可能替换Python解释器的wheel文件(#20748,#20749)uv已拒绝名为python的wheel入口点,但像Python这样的大小写变体仍然被接受。在大小写不敏感的文件系统上,包括常见的macOS和Windows设置,这些入口点可能会覆盖虚拟环境的解释器。Wheel还可能在其.data/scripts目录或类似.data/data/bin/python的路径中放置解释器文件,绕过入口点检查并在安装期间替换解释器。uv现在拒绝保留解释器名称的大小写不敏感变体和会安装到解释器上方的wheel数据文件。这包括像Python、python.py和Python.exe等名称,以及其他保留的解释器名称及其版本变体。您无法选择退出这些检查。重命名冲突的入口点或wheel数据文件,并重新构建受影响的wheel。在回退到预发布之前优先考虑稳定版本(#19993)。一个依赖项在解析开始后可能会引入预发布要求。uv之前要求在解析开始之前知道每个包的预发布合规性:默认的按需或显式模式允许它们作为明确请求预发布的直接要求,或仅发布预发布的包。这意味着在依赖项元数据中发现的预发布要求,例如example>=2.0.0b1,即使存在兼容的预发布,也会失败解析。要解决此问题,您必须将该依赖项添加为直接要求或允许整个依赖图中的预发布。默认模式现在是如果必要。uv首先尝试稳定候选者,并在没有稳定候选者满足活动约束时回退到预发布。与pip类似,uv现在支持通过传递发现的预发布要求,但在稳定和预发布候选者都可用时,可以选择与以前的uv版本不同的版本。您可以通过--prerelease disallow选择退出自动预发布选择。或者,--prerelease allow会考虑预发布
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡