You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

uv工具中如何按环境限制待构建的可选依赖(extra)?

uv工具中如何按环境限制待构建的可选依赖(extra)?

看起来你遇到的核心问题是:required-environments的设计逻辑是让uv验证所有声明的环境下的所有依赖兼容性,但PyTorch的cu124包本身就不支持arm64平台,所以uv在验证arm64环境时,会强制检查cu124的torch是否可用,自然就报错了。

要实现「不同平台自动绑定对应CUDA版本extra」的需求,正确的做法是用tool.uv.environments为每个平台定义独立的构建环境,而非依赖required-environments。下面是修正后的完整配置和关键说明:

修正后的pyproject.toml

[project]
name = "minimal_reproduction"
version = "0.1.0"
description = ""
readme = "README.md"
requires-python = ">=3.13"
dependencies = []

[tool.uv]
# 确保两个CUDA版本的extra不会同时被启用
conflicts = [
    [{extra="cu128"}, {extra="cu124"}]
]
index-strategy = "unsafe-best-match"

# 为每个目标平台定义专属构建环境
[tool.uv.environments.x86_64-linux-cu124]
# 指定该环境匹配的平台
platforms = ["linux-x86_64"]
# 该环境下仅启用cu124的可选依赖
extras = ["cu124"]

[tool.uv.environments.aarch64-linux-cu128]
platforms = ["linux-aarch64"]
extras = ["cu128"]

[project.optional-dependencies]
cu124 = [
    "torch==2.6.0+cu124",
]
cu128 = [
    "torch==2.7.0+cu128",
]

# 为每个CUDA版本的索引添加生效条件
[[tool.uv.index]]
name = "torch-cu128"
url = "https://download.pytorch.org/whl/cu128"
# 仅当cu128 extra被启用时使用该索引
when = [{extra = "cu128"}]

[[tool.uv.index]]
name = "torch-cu124"
url = "https://download.pytorch.org/whl/cu124"
when = [{extra = "cu124"}]

关键修改说明

  1. 用tool.uv.environments替代required-environments
    required-environments是让uv确认「这些环境项目都必须支持」,所以它会遍历所有环境,强制检查所有extras的兼容性——这就导致了arm64环境下cu124包不存在的报错。
    而tool.uv.environments是为每个平台单独定义构建规则,每个环境仅绑定对应的extra,uv处理特定环境时,只会加载该环境的配置,不会去验证其他环境的依赖。

  2. 为索引添加when条件
    确保每个CUDA版本的专属索引,只在对应的extra被启用时生效,避免不同版本的索引互相干扰。

  3. 实际构建时的使用方式

    • 在x86_64 Linux平台运行uv sync,会自动匹配x86_64-linux-cu124环境,仅安装cu124版本的torch;
    • 在aarch64 Linux平台运行uv sync,会自动匹配aarch64-linux-cu128环境;
    • 如果需要交叉构建特定平台,可显式指定环境:uv sync --environment x86_64-linux-cu124。

另外,针对你遇到的「非当前环境解析失败」的提示,如果只需要构建当前平台的环境,可添加参数跳过其他环境验证:

uv sync --only-current-environment

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.07 12:39:50