使用 %conda 命令管理库(旧版)

重要

本文档已过时,将来可能不会更新。 本内容中提及的产品、服务或技术不再受支持。 请参阅作用域为笔记本的 Python 库

重要

%conda 命令已弃用,仅 Databricks Runtime 7.3 LTS ML 支持它。 Databricks 建议使用 %pip 来管理笔记本范围内的库。 如果需要只能使用 conda 安装的 Python 库,可以使用基于 conda 的 docker 容器预先安装所需的库。

Anaconda Inc. 在 2020 年 9 月为 anaconda.org 通道更新了其服务条款。 根据新的服务条款,如果依赖 Anaconda 的打包和分发,则可能需要商业许可证。 有关详细信息,请参阅 Anaconda Commercial Edition 常见问题解答。 对任何 Anaconda 通道的使用都受其服务条款的约束。

由于这一变化,Databricks 已删除 Conda 包管理器的默认通道配置。 这是一项重大更改。

若要使用 %conda 命令安装或更新包,必须使用 -c 来指定通道。 还必须更新 %conda install%sh conda install 的所有使用情况,才能使用 -c 来指定通道。 如果未指定通道,则 conda 命令将失败,并显示 PackagesNotFoundError

%conda 命令等效于 %conda 命令,并支持与下述某些限制相同的 API。 以下部分介绍如何使用 %conda 命令来管理环境的示例。 有关使用 conda 安装 Python 包的详细信息,请参阅 conda

请注意,%conda magic 命令在 Databricks Runtime 上不可用。 它们仅在 Databricks Runtime 7.3 LTS ML 上可用。 Databricks 建议使用 pip 来安装库。 有关详细信息,请参阅了解 conda 和 pip

如果必须在笔记本中同时使用 %pip%conda 命令,请参阅 %pip

备注

%conda 一起使用时,不支持以下 conda 命令:

  • activate
  • create
  • init
  • run
  • env create
  • env remove

使用 %conda 安装库

%conda install matplotlib -c conda-forge

使用 %conda 卸载库

%conda uninstall matplotlib

保存并重用或共享环境

将笔记本从群集中分离时,环境不会保存。 若要保存环境以便以后重用或将其与他人共享,请按照以下步骤进行操作。

Databricks 建议仅在运行同一版本的 Databricks Runtime ML 的群集之间共享环境。

  1. 将环境另存为 conda YAML 规范。

    %conda env export -f /dbfs/myenv.yml
    
  2. 使用 conda env update 将文件导入到另一个笔记本。

    %conda env update -f /dbfs/myenv.yml
    

列出笔记本的 Python 环境

若要显示与笔记本关联的 Python 环境,请使用 %conda list

%conda list

pipconda 命令之间的交互

若要避免冲突,请在使用 pipconda 安装 Python 包和库时遵循这些准则。

  • 通过库 API群集 UI 安装的库是使用 pip 安装的。 如果已从 API 或群集 UI 安装了任何库,则在安装笔记本范围内的库时,应仅使用 %pip 命令。
  • 如果在群集上使用以笔记本为作用域的库,则在该群集上运行的初始化脚本可以使用 condapip 命令来安装库。 但是,如果初始化脚本包含 pip 命令,则仅使用笔记本中的 %pip 命令(而不是 %conda)。
  • 最好是专门使用 pip 命令,或专门使用 conda 命令。 如果必须使用 conda 安装一些包,并使用 pip 安装另一些包,请先运行 conda 命令,然后再运行 pip 命令。 有关详细信息,请参阅在 Conda 环境中使用 Pip

常见问题解答 (FAQ)

从群集 UI/API 安装的库如何与笔记本范围内的库交互?

从群集 UI 或 API 安装的库可用于群集上的所有笔记本。 这些库是使用 pip 安装的;因此,如果库是使用群集 UI 安装的,则在笔记本中只能使用 %pip 命令。

使用初始化脚本安装的库如何与以笔记本为作用域的库交互?

使用初始化脚本安装的库可用于群集上的所有笔记本。

如果在运行 Databricks Runtime ML 的群集上使用笔记本范围内的库,则群集上运行的初始化脚本可以使用 condapip 命令来安装库。 但是,如果初始化脚本包含 pip 命令,则仅使用笔记本中的 %pip 命令。

例如,此笔记本代码片段会生成一个脚本,该脚本将在所有群集节点上安装 fast.ai 包。

dbutils.fs.put("dbfs:/home/myScripts/fast.ai", "conda install -c pytorch -c fastai fastai -y", True)

能否在作业笔记本中使用 %pip%conda 命令?

是的。

是否可以在 R 或 Scala 笔记本中使用 %pip%conda 命令?

是的,可以在 Python magic 单元中使用。

能否使用 %sh pip!pippip? 有何不同?

%sh! 在笔记本中执行 shell 命令;前者是 Databricks 辅助 magic 命令,而后者是 IPython 的一项功能。 pip 是启用 automagic%pip 的简写,这是 Azure Databricks Python 笔记本中的默认设置。

在 Databricks Runtime 11.0 及更高版本上,%pip%sh pip!pip 都将库安装为笔记本范围的 Python 库。 在 Databricks Runtime 10.4 LTS 及更低版本中,Databricks 建议仅使用 %pippip 来安装笔记本范围的库。 %sh pip!pip 的行为在 Databricks Runtime 10.4 LTS 及更低版本中不一致。

能否使用 %conda 命令更新 R 包?

错误。

已知问题

  • 使用 %conda env update 更新笔记本环境时,不保证包的安装顺序。 这可能会导致 horovod 包出现问题,在这种情况下,需要在 horovod 之前安装 tensorflowtorch,以便分别使用 horovod.tensorflowhorovod.torch。 如果发生这种情况,请卸载 horovod 包,并在确保安装依赖项后重新安装它。
  • 在 Databricks Runtime 9.1 LTS 上,笔记本范围的库与批量流式处理作业不兼容。 Databricks 建议改用群集库IPython 内核