

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

# 为您的工作提供申请
<a name="provide-applications"></a>

您可以使用队列环境加载应用程序来处理您的作业。使用 Deadline Cloud 控制台创建服务托管队列时，您可以选择创建使用 conda 包管理器加载应用程序的队列环境。

如果要使用其他包管理器，可以为该管理器创建队列环境。有关使用 Rez 的示例，请参见[使用其他软件包管理器](#provide-applications-other-package)。

Deadline Cloud 提供了一个 conda 通道，用于将精选的渲染应用程序加载到您的环境中。他们支持 Deadline Cloud 为数字内容创作应用程序提供的提交者。

你也可以加载软件让 conda-forge 在你的工作中使用。以下示例显示了在运行作业之前使用 Deadline Cloud 提供的队列环境加载应用程序的作业模板。

**Topics**
+ [从 conda 频道获取应用程序](#provide-applications-get-application)
+ [使用其他软件包管理器](#provide-applications-other-package)
+ [使用 pip 处理软件包 Python-only](#provide-applications-pip)

## 从 conda 频道获取应用程序
<a name="provide-applications-get-application"></a>

您可以为 Deadline Cloud 工作人员创建自定义队列环境，安装您选择的软件。此示例队列环境的行为与控制台用于服务管理队列的环境相同。它直接运行 conda 来创建环境。

该环境会为在工作器上运行的每个 Deadline Cloud 会话创建一个新的 conda 虚拟环境，然后在完成后删除该环境。

Conda 会缓存下载的软件包，这样就不需要再次下载了，但是每个会话都必须将所有软件包链接到环境中。

该环境定义了三个脚本，这些脚本在 Deadline Cloud 在工作人员上启动会话时运行。第一个脚本在`onEnter`动作被调用时运行。它调用另外两个来设置环境变量。脚本运行完毕后，conda 环境将可用，并设置了所有指定的环境变量。

[有关该示例的最新版本，请参阅上的 deadline-cloud-samples 存储库中的 [conda\_queue\_env\_console\_eque\_equeuvalent.yaml](https://github.com/aws-deadline/deadline-cloud-samples/blob/mainline/queue_environments/conda_queue_env_console_equivalent.yaml)](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline) GitHub

如果您想使用在 conda 频道中不可用的应用程序，则可以在 Amazon S3 中创建一个 conda 频道，然后为该应用程序构建自己的软件包。请参阅 [使用 S3 创建 conda 频道](configure-jobs-s3-channel.md)，了解更多信息。

### 从 conda-forge 获取开源库
<a name="get-application-csv-example"></a>

本节介绍如何使用`conda-forge`频道中的开源库。以下示例是使用 `polars` Python 包的作业模板。

该任务设置队列环境中定义的`CondaPackages`和`CondaChannels`参数，这些参数告诉 Deadline Cloud 在哪里获取软件包。

作业模板中设置参数的部分是：

```
- name: CondaPackages
  description: A list of conda packages to install. The job expects a Queue Environment to handle this.
  type: STRING
  default: polars
- name: CondaChannels
  description: A list of conda channels to get packages from. The job expects a Queue Environment to handle this.
  type: STRING
  default: conda-forge
```

有关完整示例作业模板的最新版本，请参阅 [stage\_1\_self\_contained\_template/template.yaml。](https://github.com/aws-deadline/deadline-cloud-samples/blob/mainline/job_bundles/job_dev_progression/stage_1_self_contained_template/template.yaml)[有关加载 conda 包的队列环境的最新版本，请参阅 deadline-cloud-samples 存储库中的 conda\_queue\_env\_ [console\_equeuvalen](https://github.com/aws-deadline/deadline-cloud-samples/blob/mainline/queue_environments/conda_queue_env_console_equivalent.yaml) t.yaml。](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline) GitHub

### 获取 搅拌机 来自截止日期云频道
<a name="get-application-blender"></a>

以下示例显示了Blender从 `deadline-cloud` conda 频道获取的作业模板。该频道支持 Deadline Cloud 为数字内容创作软件提供的提交者，但您可以使用相同的渠道加载软件供自己使用。

有关该`deadline-cloud`频道提供的软件列表，请参阅 De *AWS adline Cloud 用户指南*中的[默认队列环境](https://docs.aws.amazon.com/deadline-cloud/latest/userguide/create-queue-environment.html#conda-queue-environment)。

此作业设置队列环境中定义的`CondaPackages`参数，告诉 Deadline Cloud 加载Blender到环境中。

作业模板中设置参数的部分是：

```
- name: CondaPackages
  type: STRING
  userInterface:
    control: LINE_EDIT
    label: Conda Packages
    groupLabel: Software Environment
  default: blender
  description: >
    Tells the queue environment to install Blender from the deadline-cloud conda channel.
```

有关完整示例作业模板的最新版本，请参阅 [blender\_render/template.yaml。](https://github.com/aws-deadline/deadline-cloud-samples/blob/mainline/job_bundles/blender_render/template.yaml)[有关加载 conda 包的队列环境的最新版本，请参阅 deadline-cloud-samples 存储库中的 conda\_queue\_env\_ [console\_equeuvalen](https://github.com/aws-deadline/deadline-cloud-samples/blob/mainline/queue_environments/conda_queue_env_console_equivalent.yaml) t.yaml。](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline) GitHub

## 使用其他软件包管理器
<a name="provide-applications-other-package"></a>

Deadline Cloud 的默认包管理器是 conda。如果您需要使用其他包管理器（例如）Rez，则可以创建一个自定义队列环境，其中包含使用您的包管理器的脚本。

此示例队列环境提供的行为与控制台用于服务管理队列的环境相同。它将 conda 包管理器替Rez换为。

该环境定义了三个脚本，这些脚本在 Deadline Cloud 在工作人员上启动会话时运行。第一个脚本在`onEnter`动作被调用时运行。它调用另外两个来设置环境变量。脚本运行完毕后，设置了Rez所有指定的环境变量的环境即可使用。

该示例假设您有一个客户管理的队列，该队列使用共享文件系统来处理 Rez 软件包。

[有关该示例的最新版本，请参阅上的 deadline-cloud-samples [存储库中的 rez\_queue\_env.yaml。](https://github.com/aws-deadline/deadline-cloud-samples/blob/mainline/queue_environments/rez_queue_env.yaml)](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline) GitHub

## 使用 pip 处理软件包 Python-only
<a name="provide-applications-pip"></a>

如果你的工作需要的应用程序或库是 PyPI 上可用的纯 Python 包，你可以使用 pip 和 Python 标准库`venv`模块来代替 conda 或。Rez当软件包未发布到 conda 频道时，或者当你想要一个比 conda 创建的更小的虚拟环境时，这种方法效果很好。与 conda 和不同Rez，pip 和包含`venv`在 Python 本身中，因此工作主机上只需要一个`python3`解释器即可。`PATH`Deadline Cloud 服务管理的舰队提供了一个。

当作业设置`PipPackages`参数时，会在会话工作目录中[截止日期云的 Pip 队列环境](examples-queue-env-pip.md)创建 Python 虚拟环境，使用 pip 将请求的软件包安装到其中，然后激活它，这样作业的步骤就可以在这些包可用的情况下运行。由于环境是在会话工作目录中创建的，因此 Deadline Cloud 会在会话结束时自动对其进行清理，您无需自己编写清理逻辑。如果未设置作业`PipPackages`，队列环境将不执行任何操作，因此您可以将其添加到同时运行不使用该任务的任务的队列中。

要安装来自私有索引（例如 [AWS CodeArtifact](https://docs.aws.amazon.com/codeartifact/latest/ug/welcome.html) 存储库）的软件包，而不是公共 PyPI 索引，请设置队列环境提供的`PipIndexUrl`和`PipExtraIndexUrls`参数。

如果您不想配置队列环境，则可以在任务包中内联定义相同的 pip 环境。[有关每种方法的示例，请参阅 deadline-cloud-samples存储库中的 [pip\_package\_job 和 p [ip\_self\_contained\_jo](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/job_bundles/pip_self_contained_job) b 任务](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/job_bundles/pip_package_job)捆绑包。](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline) GitHub

对于生产队列，请在`PipPackages`参数值中固定软件包版本，而不是每次都安装最新版本。版本固定为您提供了可重现的环境，并避免了软件包发布新版本时出现意外损坏。如果作业依赖于匹配的提交者和适配器版本，请将两者都固定在同一个版本上。

如果您的客户管理的车队工作人员为多个数字内容创作 (DCC) 应用程序运行作业，并且您安装了带有 pip 的 Deadline Cloud 适配器，请将每个适配器安装到自己的虚拟环境中。在同一个虚拟环境中同时安装多个适配器可能会导致 pip 将共享依赖关系解析为与其中一个适配器冲突的版本。

工作主机需要通过网络访问软件包源（例如 PyPI 或私有镜像），以便在会话开始时安装软件包。如果您的客户管理的车队工作人员在无法访问互联网的私有子网中运行，请使用包源的 VPC 终端节点、私有 pip 镜像，或者改为将软件包安装到您的工作程序 AMI 中。

下表总结了每个软件包管理器的权衡取舍，以帮助您选择要使用的软件包管理器。


| 软件包管理器 | 适用于 | Trade-offs | 
| --- | --- | --- | 
| 康达（默认） | DCC 应用程序、复杂的本机依赖关系、跨平台包 | 更大的环境；软件包必须发布到 conda 频道 | 
| Rez | 使用现有Rez基础设施的工作室管道 | 需要在工作主机上Rez安装软件包存储库和共享文件系统 | 
| Pip | Python-only 软件包、 PyPI-hosted 库、轻量级安装 | 仅限于 Python 包；没有原生依赖项解析 | 

选择队列环境后，将其附加到队列中。您可以在 Deadline Cloud 控制台的**队列环境**选项卡中为队列添加 YAML 模板，也可以使用 deadline[: CreateQueueEnvironment](https://docs.aws.amazon.com/deadline-cloud/latest/APIReference/API_CreateQueueEnvironment.html) 操作。有关控制台的说明，请参阅 D [e *AWS adline Cloud 用户指南*中的创建队列环境](https://docs.aws.amazon.com/deadline-cloud/latest/userguide/create-queue-environment.html)。要使用 AWS CLI 连接队列环境，请执行以下操作：

```
aws deadline create-queue-environment \
    --farm-id {{FARM_ID}} \
    --queue-id {{QUEUE_ID}} \
    --priority 1 \
    --template-type YAML \
    --template file://{{queue-environment.yaml}}
```