【发布时间】:2018-11-15 09:17:44
【问题描述】:
我正在编写一个依赖于tensorflow 的项目,但这可以由两个pip 包中的任何一个提供:tensorflow 或tensorflow-gpu。我的项目可以正常工作,但我不希望人们在没有 gpu 支持的机器上运行它必须安装额外的开销,但我仍然希望在支持 gpu 的机器上运行的人能够利用它。有没有办法在我的 requirements.txt 文件中标记我需要 either tensorflow 或 tensorflow-gpu 但不是两者都需要?
编辑:
在这种特定情况下,我应该注意,从程序员的的角度来看,tensorflow 和tensorflow-gpu 是相同的,因为它们都提供了一个具有相同功能的模块tensorflow /classes/methods 等,唯一的区别在于tensorflow-gpu 受益于 GPU 加速。我遇到的问题是,如果我将tensorflow 放在requirements.txt 中,那么为了使用GPU 加速运行,用户将不得不使用pip install -r requirements.txt && pip uninstall tensorflow && pip install tensorflow-gpu,这并不理想,如果我将tensorflow-gpu 放在@ 中987654336@,那么它将需要一堆不必要的系统库(CUDNN 等),并且对于非 gpu 用户无法开箱即用。
再次编辑
作为一种变通方法,我决定提供两个不同的需求文件,requirements.txt 和 requirements-gpu.txt,它们都包含一个共享的 -r .requirements-core.txt,并添加了各自版本的 tensorflow。这样,需要 GPU 支持的人可以pip install -r requirements-gpu.txt,但标准的pip install -r requirements.txt 仍然适用于所有人。
【问题讨论】:
-
没办法。
pip是一个相当简单的包管理器,requirements.txt只是一个简单的依赖项列表。requirements.txt中的条件可以为 Python 版本或架构设置,仅此而已。完全没有改动。
标签: python tensorflow pip