环境模板自定义示例

在创建环境模板时,请参照示例 pip 了解如何通过 Python 提供的模板添加自定义库。

注:
  • 从RT 25.1 和 GenAI 25-A 开始, Python 环境的定制使用.req文件格式 pip
  • 从运行时 25.1 开始,不再支持自定义基于 R 的环境。 仍然可以直接从笔记本代码安装软件包并创建自定义镜像。
  • 创建自定义 Watson Machine Learning 部署运行时的过程可能有所不同。

添加 pip 包

要从 Python 软件包索引( PyPI )添加软件包,请将每个软件包的名称写在单独一行。 这将指示 pip 系统安装环境中缺失的软件包的最新版本。 默认情况下,环境中预先安装的软件包将保持其预安装版本。

示例:

ibm-watsonx-ai
seawater
sklearn-pandas

因此:

  • 最新版本的 seawater 和 已 sklearn-pandas 安装
  • 预装的 ibm-watsonx-ai 软件包保持不变

可选地,您可以使用 ==`,` 指定包版本,或使用 >`,`、 >=`,` <、`,` 或 `, <=` 指定版本约束。 此语法指示 pip 系统安装匹配的版本,即使已预装了不同版本。

示例:

ibm-watsonx-ai>=1.5.1
seawater==3.3.5
sklearn-pandas<2

因此:

  • ibm-watsonx-ai 软件包已更新(如有必要)
  • 已安装 seawater3.3.5 版本的
  • 已安装最新版本 sklearn-pandas 的 1.x

在应用自定义配置时, pip 会考虑所列包的版本限制,以及这些包的所有依赖项。 然而, pip不会考虑其他预装软件包的依赖关系约束。 因此,它可能会用违反依赖约束的版本覆盖预装的软件包。 在这种情况下, pip 系统会打印一条关于依赖项不兼容的错误信息,但仍将安装视为成功。

示例:

pandas-profiling

当此行被添加到要求中并应用于运行时环境 25.1 时,针对 Python , pip 会安装 pandas-profiling 3.2.0 并用旧版本替换若干预装软件包。 安装过程已成功完成,但返回了错误信息。

以下是错误消息的示例:

ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
autoai-ts-libs 5.0.5 requires joblib<1.5,>=1.4.2, but you have joblib 1.1.1 which is incompatible.
scikit-learn 1.6.1 requires joblib>=1.2.0, but you have joblib 1.1.1 which is incompatible.

scikit-learn 软件包是许多预装软件包的依赖项,因此即使您并未直接使用该软件包,您的代码也可能受到影响。

在隔离系统中自定义通过pip安装的依赖项

您可能需要在与互联网隔离的系统中定制环境,该系统既无法访问本地仓库服务器,也无法访问互联网上的仓库服务器。 在这种情况下,您可以将 pip 包存储在项目中,并通过绝对文件路径或 file://URL 来指定依赖项。

示例:

/project_data/data_asset/your-package-1.7-py3-none-any.whl

最佳实践

为避免出现软件包缺失和依赖冲突的问题,请先在测试环境中通过笔记本手动安装所需软件包。 这样您就可以交互式地检查软件包是否能够在没有错误和依赖冲突的情况下安装。 检查安装日志输出中是否存在以下消息:

Attempting uninstall: <package>

ERROR: pip's dependency resolver does not currently take into account all the packages that are installed.

随后是

<package version> requires <dependency constraint>, but you have ... <dependency version> which is incompatible.

若您未直接或间接使用存在依赖冲突的报告包,请忽略这些提示信息。 请注意,有时你是否在间接使用某个包并不总是显而易见。 例如,即使您在代码中并未直接使用它, scikit-learn 它仍是许多预装包的依赖项。

如有疑问,请修改计划中的安装方案以解决冲突。 在确认软件包安装正确且未出现依赖冲突问题后,请为您的开发或生产环境创建自定义配置,并将这些软件包添加到自定义模板中。

注意: 若未为所有软件包及其引入的所有依赖项指定精确版本,您的自定义设置可能会受到 PyPI 上发布的新版本影响。 然而,若您指定了精确版本,则无法自动受益于新版本中的错误修复。