如何用Setuptools让含TensorFlow依赖的Python库适配CPU/GPU版本?
解决TensorFlow CPU/GPU依赖互斥问题
方案1:拆分互斥可选依赖(推荐)
修改你的pyproject.toml,移除默认的tensorflow依赖,把CPU和GPU版本分别放到可选依赖组里:
[project] name = "myLibrary" version = "0.1.0" dependencies = [] [project.optional-dependencies] cpu = ["tensorflow >= 2.11.0"] gpu = ["tensorflow-gpu >= 2.11.0"]
然后在项目的README或安装说明里明确告知用户:
- 安装CPU版:
pip install myLibrary[cpu] - 安装GPU版:
pip install myLibrary[gpu]
这种方式从根源上避免了同时安装两个版本的问题,用户必须明确选择其中一种依赖。
方案2:利用依赖冲突强制替换(兼容默认安装)
如果想保留默认安装CPU版的体验,可以在GPU可选依赖里添加冲突约束,让pip自动替换默认的tensorflow:
[project] name = "myLibrary" version = "0.1.0" dependencies = ["tensorflow >= 2.11.0"] [project.optional-dependencies] gpu = [ "tensorflow-gpu >= 2.11.0", "tensorflow == 0.0.0" ]
当用户执行pip install myLibrary[gpu]时,pip会检测到版本冲突,优先选择tensorflow-gpu(因为它是显式指定的可选依赖),自动忽略默认的tensorflow。不过这个方法依赖pip的冲突解决逻辑,建议在不同pip版本下测试验证。
额外提醒
从TensorFlow 2.10开始,官方已经停止单独发布tensorflow-gpu包,GPU支持完全整合到了主tensorflow包中。只要用户的系统配置了兼容的CUDA和cuDNN环境,安装默认的tensorflow>=2.11.0就能自动启用GPU加速。如果你的目标用户都是用2.11+版本,完全可以只依赖tensorflow,然后在文档里说明GPU环境配置步骤,这样就不用处理两个包的互斥问题了。
内容的提问来源于stack exchange,提问作者TantrixRobotBoy
相关产品推荐
相关产品推荐

