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

如何通过Poetry实现Torch与TorchVision的CPU/GPU版本切换安装?

问题根源

Poetry执行poetry lock时会解析所有分组(extras)的依赖,哪怕你只打算安装其中一组。你的配置中,cpu和gpu分组的torch版本范围完全重叠,但指定了不同的源——Poetry无法同时满足“从torchcpu源拉取torch”和“从torch_cuda121源拉取torch”这两个互斥要求,因此抛出冲突错误。

解决方案

方案一:用依赖标记实现互斥依赖

通过给torch和torchvision添加互斥的标记,让两个版本的依赖不会被同时解析,从而避免lock时冲突。

  1. 配置分组(extras):
[tool.poetry.extras]
cpu = []
gpu = []
  1. 配置带标记的依赖(需预先配置好torchcpu和torch_cuda121源):
[tool.poetry.dependencies]
python = "^3.10"
boxmot = "10.0.71"

# CPU版本:仅激活cpu分组且未激活gpu分组时生效
torch = { version = ">=2.2.1,<3.0.0", source = "torchcpu", markers = "extra == 'cpu' and not extra == 'gpu'" }
torchvision = { version = ">=0.17.1,<1.0.0", source = "torchcpu", markers = "extra == 'cpu' and not extra == 'gpu'" }

# GPU版本:仅激活gpu分组时生效
torch = { version = ">=2.2.1,<3.0.0", source = "torch_cuda121", markers = "extra == 'gpu'" }
torchvision = { version = ">=0.17.1,<1.0.0", source = "torch_cuda121", markers = "extra == 'gpu'" }
  1. 重新生成lock文件:
poetry lock
  1. 安装对应版本:
  • CPU版本:poetry install --with cpu
  • GPU版本:poetry install --with gpu

方案二:用独立lock文件分离环境

如果不想依赖标记,可为cpu和gpu环境分别生成独立的lock文件,彻底隔离两组依赖。

  1. 安装CPU版本并生成专属lock文件:
poetry install --with cpu --lockfile poetry-cpu.lock
  1. 安装GPU版本并生成专属lock文件:
poetry install --with gpu --lockfile poetry-gpu.lock

后续切换环境时,指定对应lock文件即可,例如再次安装CPU版本:

poetry install --with cpu --lockfile poetry-cpu.lock
注意事项
  • 确保torch和torchvision的版本与boxmot的要求兼容(你的场景中boxmot要求torch>=2.2.1,<3.0.0,当前配置的版本范围符合要求)
  • 把torch相关源的优先级设为explicit,可确保Poetry从指定源拉取对应包,避免从PyPI下载错误版本

内容的提问来源于stack exchange,提问作者Mike B

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 06:52:35