构建脚本 (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

如果您不关心在 PyPI 上使用 pip 部署您的软件包,这可以为您节省大量时间来弄清楚使用 setup.py 包含其他文件的正确方法。

定义了许多环境变量供您在 build.sh 和 bld.bat 中使用。请参阅环境变量以获取更多信息。

从 conda-build 2.1 开始,您还可以定义多个输出软件包。每个软件包都有自己的脚本或要包含的文件列表。这些输出的规则在输出部分中记录。当定义任何输出时,这将覆盖捆绑 $PREFIX 中任何内容的默认行为。因此,要从单个配方输出多个软件包,请从 build.shbld.bat 中删除任何安装步骤,而是在每个输出的安装脚本中执行这些步骤。

build.shbld.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 配方是此方法的一个示例。