gpt4 book ai didi

python - 使用 conda-build 从相同的源代码构建两个具有不同要求的包

转载 作者:行者123 更新时间:2023-12-04 08:15:45 24 4
gpt4 key购买 nike

我正在开发一个使用 Tensorflow 的项目。要求是使用 conda-build 将我的代码打包为 conda 包.
Tesnorflow 还没有在 conda 上有一个支持 cpu 和 gpu 的软件包,请参阅此 question .相反,conda 上的 Tensorflow 是两个包,一个用于 CPU tensorflow和 GPU tensorflow-gpu这将迫使我为我的 CPU 和 GPU 项目构建两个包。使用 conda-build 最简洁的方法是什么?不必有两个 repo 。
是否可以有多个 meta.yaml使用 conda-build 构建的文件?
谢谢

最佳答案

假设您的配方在 CPU 和 GPU 案例中几乎相同,此用例的预期解决方案是使用 build variants 创建一个配方.
对于您的用例,您可能不需要通读所有文档。这是一个简单(但完整)的示例。
一、创建conda_build_config.yaml在您的配方目录中,定义一个变量并列出它可以具有的每个可能的值。这指示 conda-build 为您列出的每个值构建两次配方。
此外,该变量可用于 meta.yaml ,内selectorsjinja templates .
在这个愚蠢的例子中,我们假设我们的包应该依赖于 zlibxz ,但不能两者兼而有之。我们将使用名为 foo 的变量在两者之间进行选择。 .

recipe/
├── build.sh
├── conda_build_config.yaml
└── meta.yaml
# recipe/conda_build_config.yaml
foo:
- bar
- baz
# recipe/meta.yaml
package:
name: mypackage-{{ foo }}
version: 0.1

requirements:
run:
- zlib # [foo=='bar']
- xz # [foo=='baz']
现在尝试构建配方:
conda build recipe
请注意,它构建了两个“变体”。在输出接近尾声时,它打印:
# If you want to upload package(s) to anaconda.org later, type:

anaconda upload /opt/miniconda/conda-bld/osx-64/package-bar-0.1-h11ff1f9_0.tar.bz2
anaconda upload /opt/miniconda/conda-bld/osx-64/package-baz-0.1-he38177a_0.tar.bz2
因此,在您的情况下,请使用变量在 cpu 之间切换和 gpu您的软件包的版本。在您的食谱中 requirements , 选择 tensorflow 的特定版本您需要使用如上所示的选择器。
另请注意,您在 conda_build_config.yaml 中定义的变量可用作 build.sh 中的环境变量,以防您需要在每种情况下运行不同的构建命令。
# recipe/build.sh
echo "Now building variant: ${foo}"

关于python - 使用 conda-build 从相同的源代码构建两个具有不同要求的包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65712365/

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