选择不使用 Databricks 应用中预安装的 Python 库

本页介绍如何在水平缩放的 Databricks 应用上选择退出预安装的Python库,管理自己的依赖项,以及如何稍后重新打开预安装的库。 选择退出仅适用于从标准应用转换的水平缩放应用。 请参阅 将标准应用转换为使用水平扩缩。

将标准应用转换为水平缩放时,Azure Databricks将转换后的应用固定到预安装的Python库以便应用的现有导入保持正常运行。 选择退出,在干净的基础 OS 映像上运行应用并自行声明每个库。

选择退出预安装的库

选择退出会告知 Azure Databricks 针对干净的基础 OS 映像生成你的下一次部署。 预安装的库将不再可用,除非你在requirements.txt或pyproject.toml中声明它们。

取消订阅:

  1. 在应用详细信息页上,单击“ 编辑”。
  2. 在 Configure 步骤中,清除使用预安装Python库复选框。
  3. 单击“ 保存”。 当前正在运行的部署不受影响。
  4. 请从 部署 选项卡中重新部署您的应用。此次新的部署将基于干净的基础操作系统映像进行构建。

你的依赖项可能会间接依赖于预安装的库,因此并不总是清楚你的应用直接需要哪些库。 在选择退出生产之前,在测试应用中查找缺少的库:

  1. 创建新的 水平缩放应用。 新的横向缩放应用已在干净的基础 OS 映像上运行,因此这与你选择退出后的目标一致。
  2. 将生产应用的源部署到测试应用。 更新 requirements.txt (或 pyproject.toml)并重新部署,直到测试应用启动、提供请求并通过测试。
  3. 将最终依赖项声明复制到生产应用的源中。
  4. 在生产环境中的应用上,按照 停用预安装库 中的步骤操作,并部署更新后的源代码。

生产环境会继续运行在预装了这些库的镜像上,直到你的新部署通过健康检查,因此,这种方法可以在你排查测试应用缺失的依赖项期间避免停机。

在选择退出后解决错误

选择退出后,最常见的故障是在应用启动时出现 ModuleNotFoundError,其原因是你的代码从预安装集合中隐式导入了某个框架或库。 解决方法:

  1. 打开应用详细信息页上的“ 日志 ”选项卡。
  2. 在生成或运行时日志中查找缺少的模块名称。
  3. 将相应的包添加到 requirements.txt (或 pyproject.toml) 并重新部署。

如果应用进程在启动后的头几秒钟内保持运行状态,则新部署只会替换正在运行的部署。 如果选择退出后的部署因缺少导入所需的模块而立即崩溃,它不会接管流量;在你修复依赖项列表期间,流量会继续由之前正常工作的部署处理。 启动检查较为粗略,因此在选择停用该检查后,应测试应用是否确实能够处理请求,而不要依赖该检查来发现有问题的部署。

重新打开预安装的库

选择退出后返回到预安装的库:

  1. 在应用详细信息页上,单击“ 编辑”。
  2. 在 Configure 步骤中,选中“使用预安装的Python库复选框。
  3. 单击“ 保存”。
  4. 从 Deployments 选项卡再次部署您的应用。此次新部署将基于已预装这些库的基础镜像进行构建。

你的 requirements.txt 和 pyproject.toml 将继续适用,因此你在选择退出期间添加的任何显式声明都会被保留。

注释

将水平缩放的应用转换 回标准应用 也会还原预安装的库:无论是否选择退出,标准应用都会重新生成。如果以后将应用转换为水平缩放,它将包括预安装的库,直到再次选择退出。