为何xformers实际依赖torch版本与requirements.txt声明不符?
xformers依赖显示与requirements.txt不符的原因
pipdeptree读取的是包元数据而非源码配置
pipdeptree不会直接解析源码里的requirements.txt,它读取的是已安装包的元数据文件(比如METADATA)。xformers在打包过程中,可能通过动态逻辑(比如编译时的环境检测)生成了更严格的依赖约束,而非完全沿用requirements.txt里的torch>=1.12宽松声明,这些约束会被写入元数据,所以pipdeptree显示的是具体的torch==2.1.2。预编译wheel包的依赖锁定
你安装的是PyPI上的预编译wheel包,不是从源码编译的。这类包在构建时会绑定构建环境所用的torch版本(比如当时用的是torch 2.1.2),打包工具会把这个具体版本写入wheel的元数据作为依赖要求。哪怕源码的requirements.txt是宽松约束,预编译包的实际依赖也会被锁定到构建时的版本。版本适配的细分发布策略
xformers针对不同torch版本会发布对应的预编译包,虽然源码层面声明支持torch>=1.12,但实际发布时,每个预编译包会绑定特定的torch版本以保证兼容性。比如xformers==0.0.23.post1的某个预编译包就是专为torch 2.1.2构建的,安装后pip识别到这个绑定关系,pipdeptree就会显示严格的版本要求。
内容的提问来源于stack exchange,提问作者Nocturne
相关产品推荐
相关产品推荐

