构建脚本 (build.sh, bld.bat)#
build.sh
文件是 Linux 和 macOS 的构建脚本,而 bld.bat
是 Windows 的构建脚本。这些脚本包含执行构建步骤的逻辑。传统上它还包含安装步骤。在传统的每个食谱一个包的方式下,构建脚本复制到 $PREFIX
或 %PREFIX%
文件夹中的任何内容都将包含在您的输出包中。例如,此 build.sh
mkdir -p $PREFIX/bin
cp $RECIPE_DIR/my_script_with_recipe.sh $PREFIX/bin/super-cool-script.sh
如果您不关心使用 pip 在 PyPI 上部署您的包,这可以节省您很多时间来弄清楚在 setup.py 中包含其他文件的正确方法。
为你在 build.sh 和 bld.bat 中使用定义了许多环境变量。请参阅 环境变量 获取更多信息。
从 conda-build 2.1 开始,您还可以定义多个输出包。每个包都有自己的脚本或要包含的文件列表。这些输出的规则记录在 输出部分 中。定义任何输出时,这将覆盖将 $PREFIX
中的任何内容捆绑在一起的默认行为。因此,要从单个食谱输出多个包,请从 build.sh
或 bld.bat
中删除任何安装步骤,而是在每个输出的安装脚本中执行这些步骤。
build.sh
和 bld.bat
是可选的。您可以在您的 meta.yaml
中使用 build/script
键,每个值都是字符串命令或字符串命令列表。您放置在那里的任何命令都必须能够在您构建的每个平台上运行。例如,您不能使用 cp
命令,因为 cmd.exe 无法在 Windows 中理解它。
build.sh
使用 bash
运行,而 bld.bat
使用 cmd.exe
运行。
目前正在开发在 Windows 中使用 bash 脚本的能力,但目前不支持。您可以将脚本编写为 .sh 文件,然后在您的 bld.bat 文件中调用它,但无法在 Windows 上直接运行 build.sh。位于 AnacondaRecipes/conda-feedstock 的 conda 食谱是这种方法的一个示例。