如何在requirements.txt单行声明PyTorch与CUDA的兼容版本(使用~=)
PyTorch与CUDA版本在requirements.txt中的兼容声明问题
你的写法是否正确?
不正确。
原因说明
pip的~=(兼容运算符)遵循PEP 440版本规范,仅会解析版本号中+符号之前的核心版本部分,+之后的本地版本标识符(比如PyTorch版本里的cu117)不会被~=处理。因此torch~=1.13+cu11实际等价于torch~=1.13,只会限制PyTorch为1.13.x系列,但完全无法约束CUDA版本,安装时可能匹配到带cu102、cu118等非目标CUDA版本的包,不符合你的需求。
正确用法与替代方案
没办法直接通过~=同时约束PyTorch 1.13.x和CUDA 11.x版本,因为PyTorch的CUDA版本绑定在本地标识符中,pip没有语法支持对这部分做模糊匹配。可行的替代方式:
- 枚举符合条件的版本模式:在同一行用
||(逻辑或)列出所有PyTorch 1.13.x系列中带CUDA 11.x后缀的版本规则,比如:
这种写法能精确匹配目标版本组合,但需要提前确认PyTorch 1.13.x支持的所有CUDA 11.x子版本。torch~=1.13.0+cu111 || torch~=1.13.0+cu112 || torch~=1.13.0+cu113 || torch~=1.13.0+cu114 || torch~=1.13.0+cu115 || torch~=1.13.0+cu116 || torch~=1.13.0+cu117 - 版本范围+注释提示:用
torch>=1.13.0,<1.14.0约束PyTorch版本在1.13.x区间,然后在requirements.txt中加注释说明需要安装带CUDA 11.x后缀的包,示例:
这种方式仅做提示,不会强制约束CUDA版本,适合需要人工确认安装环境的场景。# 需安装PyTorch 1.13.x + CUDA 11.x版本 torch>=1.13.0,<1.14.0
能否在同一行声明两者的兼容版本?
无法通过单一的~=语法实现,但可以用上述的||枚举方式在同一行列出所有符合条件的版本规则,从而间接实现同时约束PyTorch和CUDA版本的目的。
内容的提问来源于stack exchange,提问作者cemrifki
相关产品推荐
相关产品推荐

