gpt4 book ai didi

python - requirements.txt - 如何标记替代包

转载 作者:行者123 更新时间:2023-12-03 17:16:12 36 4
gpt4 key购买 nike

我正在编写一个依赖 tensorflow 的项目, 但可以由两个 pip 中的任何一个提供包裹:tensorflowtensorflow-gpu .我的项目可以正常工作,但我不希望人们在没有 gpu 支持的机器上运行它必须安装额外的开销,但我仍然希望在支持 gpu 的机器上运行的人能够利用它。有没有办法在我的requirements.txt中标记我需要的文件 tensorflowtensorflow-gpu但不是两者兼而有之?

编辑:

在这种特定情况下,我应该注意,从程序员的角度来看,tensorflowtensorflow-gpu是相同的,因为它们都提供了一个模块 tensorflow它具有相同的功能/类/方法等,唯一不同的是tensorflow-gpu受益于 GPU 加速。我遇到的问题是,如果我把 tensorflowrequirements.txt那么为了使用 GPU 加速运行,用户必须执行 pip install -r requirements.txt && pip uninstall tensorflow && pip install tensorflow-gpu这并不理想,如果我改为输入 tensorflow-gpurequirements.txt ,那么它将需要一堆不必要的系统库(CUDNN 等),并且不会为非 GPU 用户开箱即用。

再次编辑

作为一种变通方法,我决定提供两个不同的需求文件,requirements.txtrequirements-gpu.txt , 两者都包含一个共享的 -r .requirements-core.txt并添加各自版本的 tensorflow。这样想要GPU支持的人可以pip install -r requirements-gpu.txt但标准 pip install -r requirements.txt仍然可以为每个人开箱即用。

最佳答案

您不能使用 requirements.txt 限制下载包,但您可以执行以下解决方案之一:

1 - 将包 tensorflow 和 tensorflow-gpu 安装为依赖项,并尝试/except 以选择实际使用的包,例如:

tensorflow = null

try:
tensorflow = __import__("tensorflow-gpu")
tensorflow.operation_that_requires_gpu()
except:
tensorflow = __import__("tensorflow")
enter code here

2 - 在您的项目中,您要求客户将依赖项直接传递给您:
def my_function_that_uses_tensorflow(tensorflow):
# do stuff

from my_module import my_function_that_uses_tensorflow
import tensorflow # or tensorflow = __import__("tensorflow-gpu")
my_function_that_uses_tensorflow(tensorflow)

3 - 如果 tensorflow-gpu 和 tensorflow 都使用相同的 tensorflow 安装它们的包在您的站 pip 包上命名,然后我的建议是尝试/除了我在选项号 1 上所说的那样,但不要将 tensorflow-gpu 或 tensorflow 作为您的包的依赖项(将其视为“对等依赖项”)使用你的包的代码应该包含它们的依赖项才能使用它):
try:
import tensorflow
except:
raise ImportError('You need to include tensorflow or tensorflow-gpu as a dependency in order to use this package')

关于python - requirements.txt - 如何标记替代包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50707658/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com