尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

uv 0.10 系列(0.10.0–0.10.12)变更全解析:破坏性变更迁移、Python 版本管理稳定化与补丁版本修复

uv 0.10 系列(0.10.0–0.10.12)变更全解析:破坏性变更迁移、Python 版本管理稳定化与补丁版本修复 uv 0.10 系列0.10.0–0.10.12变更全解析破坏性变更迁移、Python 版本管理稳定化与补丁版本修复【免费下载链接】uvAn extremely fast Python package and project manager, written in Rust.项目地址: https://gitcode.com/GitHub_Trending/uv/uv本文基于仓库中的 changelogs/0.10.x.md 完整梳理 uv 0.10 系列的发布脉络0.10.0 的 12 项破坏性变更与 4 项预览功能稳定化以及 0.10.1 至 0.10.12 共 12 个补丁版本在 Python 解释器支持、Docker 镜像、缓存机制、性能与平台兼容方面的演进。读完本文你可以掌握从 0.9.x 升级到 0.10.x 的完整迁移清单含每一项的豁免方式并结合 crates/uv-cli/src/lib.rs、crates/uv-virtualenv/src/lib.rs 等源码理解这些变更在实现层的落地方式。0.10.0为 0.10 系列定调的“谨慎式”大版本uv 0.10.0 发布于 0.9.02025 年 10 月之后官方定位是累积了一批“提升正确性和用户体验、但可能破坏部分工作流”的变更出于谨慎统一标记为破坏性变更绝大多数用户可以直接升级而无需修改配置。该版本还稳定化了多项预览功能Python 升级机制稳定化包括uv python upgrade命令、uv python install --upgrade标志以及安装新 Python 时自动升级虚拟环境中的补丁版本add-bounds与extra-build-dependencies配置项稳定化uv workspace dir与uv workspace list用于编写针对 workspace 成员的脚本稳定化。同时官方特别提示uv_build构建后端没有任何破坏性变更但如果你在[build-system]表中对后端版本设置了上界如0.10.0应将其更新为0.11.0。破坏性变更一uv venv必须显式--clear才能清除已有虚拟环境此前uv venv在交互式环境下删除已有虚拟环境前会提示确认在非交互式环境下则不加确认直接删除。0.10.0 起uv venv要求显式传入--clear标志才会删除已有虚拟环境该行为在 uv 0.8 中已提前给出警告见 changelogs/0.8.x.md 的 Breaking changes 小节。豁免方式传入--clear标志或设置环境变量UV_VENV_CLEAR1。从源码可以看到这套参数体系的完整设计crates/uv-cli/src/lib.rs 中定义了四组互相配合的选项--clear-c删除目标路径上已有的文件或目录后重建支持UV_VENV_CLEAR环境变量采用布尔解析BoolishValueParser因此UV_VENV_CLEAR1、UV_VENV_CLEARtrue都生效--force允许--clear删除非虚拟环境的目录会删除目标路径下所有文件--no-clear存在 TTY 时不再交互式提示直接以错误退出且优先级高于环境变量overrides_with clear--allow-existing不清理、直接在目标路径上写入新环境官方警告若旧环境与解释器不一致可能导致意外行为。对应的错误提示逻辑在 crates/uv-virtualenv/src/lib.rs当目标路径已存在时抛出Exists错误并自动附带提示 “Use the--clearflag or setUV_VENV_CLEAR1to replace the existing virtual environment”若是非虚拟环境目录则提示使用--force。集成测试 crates/uv/tests/python/venv.rs 覆盖了该行为包括--no-clear覆盖UV_VENV_CLEAR1的优先级验证见该文件 L2343 附近的用例注释。破坏性变更二多个 index 同时标记default true时报错此前 uv 会静默接受多个default true的 index 并使用其中第一个现在只要多个 index 被标记为默认uv 直接报错。无法豁免只能将default true从除一个之外的所有 index 中移除。这类静默歧义被转为显式错误是 0.10.0 “提升正确性”主题的典型体现。破坏性变更三explicitindex 必须命名explicit显式index 只能通过[tool.uv.sources]表使用而该表要求按名字引用index。此前 uv 会静默接受未命名的 explicit index——但它们永远无法被引用。现在未命名的 explicit index 会直接报错。无法豁免为其添加name或删除该条目。破坏性变更四替代 Python 实现按其实现名安装可执行文件此前uv python install会把 PyPy、GraalPy、Pyodide 的可执行文件以python3.10之类的名字写入 bin 目录与 CPython 安装相互冲突。现在这些可执行文件以实现名命名例如pypy3.10、graalpy3.10、pyodide3.12。无法豁免。破坏性变更五uv tool run/uv tool install尊重全局 Python 版本 pin此前这两个命令忽略通过uv python pin --global设置的全局 Python 版本 pin现在在未显式请求版本时它们会使用全局 pin。对uv tool install有两点细节值得注意若工具已安装除非提供--reinstall或--python否则不会切换 Python 版本若工具当初是用显式--python安装的全局 pin 不会覆盖它。豁免方式显式提供--python标志。破坏性变更六移除部分 Docker 镜像Debian Bookworm 与 Alpine 3.21 镜像已在 uv 0.9 中被 Debian Trixie 和 Alpine 3.22 取代为默认本版本正式移除由于 Trixie / Alpine 基础镜像不再支持 Python 3.8Python 3.8 系列镜像也一并移除。不再发布的镜像标签uv:bookworm、uv:bookworm-slimuv:alpine3.21uv:python3.8-*迁移方案用uv:debian或uv:trixie替代uv:bookworm用uv:alpine或uv:alpine3.22替代uv:alpine3.21用更新的 Python 版本替代uv:python3.8-*。破坏性变更七不再提供 PPC64大端预构建二进制uv 不再发布 PPC64大端平台的预构建二进制官方判断该平台使用极少且只受单个 manylinux 版本支持PPC64LE小端不受影响。从源码构建 uv 在该平台仍然可行。破坏性变更八可重定位虚拟环境不再生成activate.csh此前uv venv --relocatable生成的activate.csh脚本内含硬编码路径与“可重定位”目标自相矛盾。现在对--relocatable环境直接不生成该脚本。无法豁免。破坏性变更九多条凭据匹配同一 URL 时必须指定用户名通过uv auth login为同一主机注册多组用户名/密码后此前 uv 在需要认证例如uv auth token获取令牌且多条凭据匹配该 URL 时会取第一条匹配项现在改为直接报错。无法豁免正确做法是在请求中带上用户名例如uv auth token --username foo example.com破坏性变更十修改exclude-newer不再使锁文件版本失效此前修改exclude-newer设置会导致包版本被升级等于完全忽略锁文件现在 uv 只在包版本超出新的exclude-newer范围时才变更版本。豁免方式即恢复旧行为显式使用--upgrade或--upgrade-package。破坏性变更十一uv format升级至 Ruff 0.15.0uv format现在默认使用 Ruff 0.15.0采用 Ruff 2026 风格指南代码格式很可能发生变化。豁免方式指定旧版本例如uv format --version 0.14.14。破坏性变更十二uv crate 测试特性改用test-前缀此变更只影响 uv 的分发者用于门控测试依赖的 Cargo 特性如pypi被重命名为带test-前缀的形式如test-pypi以便语义清晰。0.10.0 稳定化的预览功能uv python upgrade与uv python install --upgrade安装 Python 版本时会创建一个不带补丁版本号的中间目录如cpython-3.11下存放3.11.9虚拟环境会在安装新补丁版本时被透明升级。概念细节可参考 docs/concepts/python-versions.md。实现侧crates/uv/src/commands/python/install.rs 定义了PythonUpgradeSource区分Upgrade命令来源与Install的--upgrade来源与PythonUpgrade枚举Enabled(source)/Disabled并贯穿uv python install与uv python upgrade两条命令路径见 crates/uv/src/lib.rs 中PythonUpgradeSettings::resolve的接线。uv add --bounds与add-bounds配置项行为不变只是不再打印实验性警告。uv workspace list与uv workspace dir行为不变只是不再打印实验性警告。注意从源码结构看crates/uv/src/commands/workspace/list.rs 中对--scripts选项仍有PreviewFeature::WorkspaceListScripts预览门控说明 workspace 脚本相关能力在 0.10.0 时是分层稳定的。extra-build-dependencies行为不变不再打印实验性警告。0.10.0 其他增强与修复增强改进 ABI 标签错误消息措辞引入 10 秒连接超时允许在PYX_API_URL不一致时仍把pyx.dev作为uv auth命令的目标。修复完整支持所有 CPython ABI 标签后缀支持在 Linux 与 macOS 上检测 PowerShell对流式传输的超时错误进行重试。0.10.1 – 0.10.3稳健性收尾0.10.12026-02-10读取元数据出错时不再 panic遇到空的 workspace 成员时跳过而非失败已存在的只读sdist-vX/.git不再导致失败文档在 Python 文档中推荐uv python update-shell而非uv tool update-shell。0.10.22026-02-10弃用意外的 ZIP 压缩方法解压安全面的收紧修复cargo-install因缺少uv-test依赖而失败的问题。0.10.32026-02-16Python 方面新增 CPython 3.15.0a6。增强文件锁改为不开启写锁Windows trampoline 错误信息与 uv 本体保持一致记录启用了哪些预览功能。预览功能uv format支持 Ruff 版本约束与exclude-newer启用target-workspace-discovery时修复脚本路径处理uv format用版本约束选择默认 Ruff 版本。修复集中在正确性与健壮性不再按前缀匹配托管 Python 版本例如指定cpython-3.1不会误匹配 CPython 3.10修复 Windows 上--allow-existing对次版本链接的处理遇到不受管理的 workspace 成员时不再 panic提升请求计时精度拒绝版本段中的u64::MAX以防止溢出。文档方面将 Debian 参考从 Bookworm 改为 Trixie呼应 0.10.0 的镜像移除。0.10.4 – 0.10.5锁文件、NFS 与 Linux 文件复制0.10.42026-02-17展示uv python错误时去除受影响路径的重复引用跳过仅含 git 忽略文件的 workspace 成员发现含子目录修复在文件系统根目录初始化包时的 panic如uv init / --name foo修复uv_build构建后端产出的wheel/sdist文件权限问题回退锁文件的改动修复 NFS 挂载点上锁文件的问题。0.10.52026-02-23本版本条目较多值得重点关注三类Linux 文件复制路径优化默认尝试 reflink#18117reflink 失败后先回退到硬链接再退化为完整拷贝#18104——这条“reflink → hardlink → copy”的降级链在 0.10.6 又补上了文件权限保持的修复。索引与缓存行为当命名 index 在父级配置文件中找到时给出提示uv lock --frozen增加警告exclude-newer使锁文件失效时的错误信息修正与 0.10.0 的破坏性变更十形成呼应。其他pylock.toml的 wheel 按 tags 与requires-python过滤uv publish校验 wheel 文件名已规范化性能上优化了与某个 extra 反复冲突的求解路径修复UV_NO_DEFAULT_GROUPS拒绝1等真值的问题、iOS 平台检测、--no-emit-workspace在单成员 workspace 配合--all-packages时的行为构建并发改为全局信号量项目级 conflicts 传播到包 extras。0.10.6 – 0.10.8Python 版本更新与镜像体系0.10.62026-02-24三个修复对 fork 标记应用锁文件标记规范化修复脚本requires-python与.python-version冲突时的 Python 版本选择Linux reflink 保持文件权限承接 0.10.5 的 reflink 默认化。0.10.72026-02-27修复 Windows Containers on Windows 中 junction 的处理为中间件重试启用日志uv 发布产物上传至镜像。0.10.82026-03-03本版本引入了新的 Python 版本与一批分发基础设施改进新增CPython 3.10.20、3.11.15、3.12.13Docker新增基于 Docker Hardened Images 的镜像为 Docker 镜像添加 SBOM 证明镜像默认化默认从 Astral 镜像获取 CPython安装脚本默认从 Astral 镜像下载 uv 发布产物网络行为配置 1 秒的最低重试延迟uv_build扩展 direct build 兼容性新配置新增UV_INIT_BARE环境变量用于uv init修复防止uv tool upgrade安装被排除的依赖保存工具回执时提升认证策略脚本中尊重 exclusionspylock.toml保留默认分支的 Git SHA--upgrade时尊重 constraints修复uv tree的孤立根节点与过早去重URL 依赖跳过已安装 Python 检查。0.10.9 – 0.10.10PyTorch 列表、uv audit预览与缓存性能0.10.92026-03-06PyTorch 列表新增fbgemm-gpu、fbgemm-gpu-genai、torchrec、torchtune、torchcodec对 AI 基础设施依赖管理是实用的扩展记录出错前的耗时使用uv_build相关设置但后端并非uv_build时给出警告Linux 系统识别失败时回退到/usr/lib/os-release构建使用cargo auditable把 SBOM 纳入 uv 构建产物新配置UV_VENV_RELOCATABLE环境变量呼应 0.10.0 破坏性变更八中的 relocatable 主题性能避免 tomlDocument的额外开销使用单一全局 workspace 缓存对大 workspace 的启动与解析有明显意义从源码结构看这是把 workspace 发现结果在进程内全局复用修复trampoline 任务分配失败时继续硬链接数量超限时优雅降级而非失败workspace 成员尊重构建约束脚本中重新校验 editables 与其他依赖Android 上支持 Python 3.13支持cp3-none-any标签跳过 Windows 上链接到 Python 的损坏工具的虚拟环境。0.10.102026-03-13Python新增 CPython 3.15.0a7新增能力uv tool list增加--outdated标志查看已安装工具的过期状态构建工作流加入 riscv64 musl 目标Ruff 默认从 Astral 镜像获取缓存uv cache clear成为uv cache clean的别名预览功能uv audit明显发力审计输出加入链接审计输出/报告格式切换为批量 OSV 查询修复跨 index 不共享版本元数据升级 zlib-rs 到 0.6.2 修复 Windows 上大 wheel 解压 panic过滤不支持环境的 wheel锁文件保留绝对/相对路径uv tool install --force重建 Python 环境缓存环境尊重时间戳等缓存键uv export简化所选 extra 的标记修复 Windows 操作系统与版本上报。文档方面平台支持策略新增第三档tier 3纳入 freebsd 与 32 位 Windows。0.10.11 – 0.10.12解释器支持扩展与生态收尾0.10.112026-03-16Ruff 发布元数据改从 Astral 镜像获取uv 自身改用 PEP 639 license 元数据性能优化 distribution id 的构建性能修复--project可直接指向pyproject.toml其他文件降级为警告macOS 上查询解释器时禁用SYSTEM_VERSION_COMPAT强制支持环境可用的发行版集合修复UV_PYTHON_INSTALL_DIR为相对路径时uv sync --active误重建活跃环境的问题。0.10.122026-03-19Python新增 PyPy 3.11.15支持使用 Python 3.6 解释器对老系统兼容有实际意义增强版本上报包含 uv 的 target triple--no-emit-package支持逗号分隔多值预览uv audit出现在 CLI 帮助中修复uv python list改进托管解释器符号链接的报告移除依赖时保留上一条目行尾注释abi3 wheel 的 Python 版本视为下界检测运行 armv7 用户空间的 aarch64 内核的硬浮点支持。文档支持版本加入 Python 3.15Pyodide 移入 Python 支持策略第二档Rust 与 Python 版本支持移出平台支持策略Docker 指南按uv-docker-example的变更更新。总结0.10 系列升级路径速查关注点需要做的动作豁免/替代方式uv venv覆盖已有环境显式加--clear或设置UV_VENV_CLEAR1--no-clear可覆盖环境变量多默认 index只保留一个default true无豁免未命名 explicit index添加name或删除无豁免PyPy/GraalPy/Pyodide 可执行名脚本中改用pypy3.10等新名字无豁免工具链 Python 版本核对全局 pin 是否符合预期显式--pythonDocker 镜像换用uv:trixie/uv:alpine3.22/ 新 Python 标签旧标签不再发布PPC64 大端部署改为源码构建无预构建二进制--relocatable环境的 csh 激活不再依赖activate.csh无豁免多凭据认证请求带--username无豁免exclude-newer变更无需动作锁文件更稳定需要升版本时加--upgradeuv format格式化差异接受 2026 风格或固定 Ruff 版本uv format --version 0.14.14从发布节奏看0.10 系列呈现出清晰的演进轨迹0.10.0 完成语义收紧把此前的静默行为全部显式化0.10.1–0.10.4 集中消化边角 panic 与文件系统问题NFS、根目录 init、只读目录0.10.5–0.10.6 打磨 Linux 文件复制与锁文件正确性0.10.8–0.10.10 建立镜像分发与uv audit预览能力0.10.11–0.10.12 扩展解释器覆盖面Python 3.6 解释器支持、CPython 3.15 alpha、PyPy 3.11.15。如果你正从 0.9.x 升级最稳妥的路径是先核对上表中“无豁免”的三项配置类变更再在 CI 中为uv venv相关流程补上--clear然后放心地升级到最新的 0.10.12。参考仓库文件changelogs/0.10.x.md、crates/uv-cli/src/lib.rs、crates/uv-virtualenv/src/lib.rs、crates/uv-static/src/env_vars.rs、crates/uv/src/commands/python/install.rs、crates/uv/src/commands/workspace/list.rs、crates/uv/tests/python/venv.rs、docs/concepts/python-versions.md。【免费下载链接】uvAn extremely fast Python package and project manager, written in Rust.项目地址: https://gitcode.com/GitHub_Trending/uv/uv创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表