View a markdown version of this page

为应用程序或插件创建 conda 包 - 截止日期云

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

为应用程序或插件创建 conda 包

conda 软件包是用任何语言编写的软件的压缩存档。Conda 支持各种操作系统和架构组合,因此您可以将完整的应用程序(如BlenderMaya、和)与 Python 和其他语言的库Nuke一起打包。有关 conda 软件包的更多信息,请参阅 conda 文档中的软件包。

要使用 conda 软件包,需要将其安装到虚拟环境中。conda 虚拟环境有一个安装软件包的前缀目录。如果支持,安装软件包会使用硬链接或重新链接文件,因此使用相同的软件包创建多个环境不会占用大量的额外磁盘空间。要使用虚拟环境,请将其激活以设置环境变量。激活运行软件包提供的脚本,使每个包都有机会修改 PATH 或其他环境变量。Conda 软件包通常包含应用程序或库,但灵活的激活意味着它们也可以指向安装在共享文件系统上的应用程序。

制作自定义软件包涉及三个阶段:配方包含编译指令,软件包是构建的工件(.conda.tar.bz2文件),频道托管用于安装的软件包。该rattler-build publish命令可以处理所有三个步骤——它可以将配方构建到包中并发布到频道,也可以直接使用包构件来发布。

conda-forge 社区维护着各种开源软件的软件包配方,并在该conda-forge频道中托管软件包工件。您可以将队列配置conda-forge为包含为包源,然后构建依赖于 conda-forge 软件包运行的自定义软件包。对于Linux,conda-forge 托管完整的编译器工具链,包括 CUDA 支持,并选择了一致的编译和链接选项。您可以在自己的配方中使用 conda-forge 软件包作为依赖项,也可以将它们与自定义包一起安装在同一个环境中。

您可以将整个应用程序(包括依赖关系)合并到一个 conda 包中。Deadline Cloud在截止日期云频道中为服务管理的舰队提供的软件包使用这种二进制重新打包方法。这会组织与安装相同的文件以适合 conda 虚拟环境。

注意

大型应用程序可能需要数十 GB 的可用磁盘空间来存储源存档、提取的文件和编译输出。确保使用具有足够可用空间的磁盘来输出软件包编译输出。

打包应用程序

为 conda 重新打包应用程序时,有两个目标:

  • 应用程序的大多数文件应与主 conda 虚拟环境结构分开。然后,环境可以将应用程序与来自其他来源(例如 conda-f orge)的软件包混合使用。

  • 激活 conda 虚拟环境后,应用程序应可从 PATH 环境变量中访问。

为 conda 重新打包应用程序
  1. 编写 conda 编译配方,将应用程序安装到子目录中,例如。$CONDA_PREFIX/opt/<application-name>这使它与标准前缀目录(如binlib)分开。

  2. 向添加符号链接或启动脚本$CONDA_PREFIX/bin以运行应用程序二进制文件。

    或者,创建 activate.d 脚本,该conda activate命令将运行该脚本以将应用程序二进制目录添加到 PATH。在Windows所有可以创建环境的地方都不支持符号链接的情况下,改用应用程序启动或 activate.d 脚本。

  3. 某些应用程序依赖于默认情况下未安装在 Deadline Cloud 服务管理的队列上的库。例如,对于非交互式作业,通常不需要 X11 窗口系统,但有些应用程序仍然要求它在没有图形界面的情况下运行。你必须在你创建的包中提供这些依赖关系。

  4. 如果应用程序支持插件,请提供明确的约定,插件包应遵循该约定才能在虚拟环境中与应用程序集成。例如,Maya2026 年的示例配方记录了这个Maya插件惯例。

  5. 确保遵守打包应用程序的版权和许可协议。我们建议您的 conda 频道使用私有 Amazon S3 存储桶来控制分发并限制包裹对农场的访问权限。

deadline-cloud频道中软件包的示例配方可在上的 Deadl ine Cloud 示例存储库中找到GitHub。

打包插件

应用程序插件可以打包为自己的 conda 包。创建插件包时,请遵循以下准则:

  • 在编译配方中将主机应用程序包作为编译依赖项和运行依赖项包括在内recipe.yaml。使用版本限制,以便编译配方仅与兼容包一起安装。

  • 按照宿主应用程序包惯例注册插件。

适配器套装

一些 Deadline Cloud 应用程序集成使用适配器来扩展应用程序接口,以简化作业模板的编写。适配器是一个命令行界面,支持运行后台守护程序、报告状态和应用路径映射。有关更多信息,请参阅上GitHub的 Open Job Description Adaptor 运行时。例如,d eadline-cloud-for-maya 开GitHub启时包括集成的任务提交 GUI 和Maya适配器,该适配器可作为软件包在服务管理的队列中maya-openjd使用。

从 Deadline Cloud 提交者 GUI 提交的作业中包含一个CondaPackages参数值,该参数值指定要包含在虚拟环境中用于运行作业的 conda 包。的CondaPackages参数值Maya通常看起来像插件包的替代条目maya=2026.* maya-openjd=0.15.* maya-mtoa,可能包含插件包的替代条目。当队列环境设置用于运行作业的 conda 虚拟环境时,它会解析这些包名称和版本约束以使其兼容,并添加它们运行所需的所有依赖包。每个适配器和插件包都指定了与之兼容的内容,包括哪些版本Maya、哪个版本的 Python 以及其他依赖项。

要使用我们的示例(例如 maya-openjd 配方)构建自己的适配器包GitHub,您可以在 conda-forge 提供的 Python 包和其他依赖项的基础上进行构建。https://conda-forge.org/你可能需要先构建截止日期 openjd-adaptor-runtime 配方来满足依赖关系。