重要说明:

IBM Cloud Pak® for Data 4.6 版本将于 2025 年 7 月 31 日结束支持(EOS)。 欲了解更多信息,请参阅 IBM Cloud Pak for Data 版本 4.X 的停止服务公告

在 IBM Cloud Pak for Data 4.6 版本支持结束之前,升级到 IBM Software Hub 5.1 版本。 更多信息,请参阅 IBM Software Hub 版本 5.1 文档中的升级 IBM Software Hub。

定制示例

本主题向您显示了在创建环境模板时如何使用为 Python 和 R 提供的模板通过 conda 或 pip 添加定制库的不同示例。

您可以在以下示例中使用 mamba 来代替 conda。 如果将来自 mamba 的通道或包添加到现有环境模板,请记住选中要从 mamba 安装的复选框。

存在以下示例:

提示和技巧:

添加 conda 软件包

要获取最新版本的 pandas-profiling:

dependencies:
  - pandas-profiling 

这等效于在 Notebook 中运行 conda install pandas-profiling

添加 pip 软件包

如果特定软件包在 conda 通道中不可用,还可以使用 pip 定制环境:

dependencies:
  - pip:
    - ibm-watson-machine-learning

这等效于在 Notebook 中运行 pip install ibm-watson-machine-learning

定制将实际执行的不仅仅是安装指定的 pip 软件包。 conda 的缺省行为是还查找 pip 本身的新版本,然后进行安装。 检查 conda 中的所有隐式依赖关系通常需要几分钟时间,也需要千兆字节内存。 以下定制将快捷方式安装 pip:

channels:
  - empty
  - nodefaults

dependencies:
  - pip:
    - ibm-watson-machine-learning

conda 通道 empty 不提供任何包。 尤其是没有 pip 包。 conda 不会尝试安装 pip ,而是使用已预先安装的版本。 请注意,通道列表中的关键字 nodefaults 至少需要该列表中的一个其他通道。 否则, conda 将以静默方式忽略该关键字并使用缺省通道。

组合 conda 和 pip 软件包

可以列出多个软件包,每行一个软件包。 单个定制可以同时包含 conda 软件包和 pip 软件包。

dependencies:
  - pandas-profiling
  - scikit-learn=0.20
  - pip:
    - watson-machine-learning-client-V4
    - sklearn-pandas==1.8.0

请注意,必需的模板表示法区分前导空格。 conda 软件包列表中的每项都必须有两个前导空格。 pip 软件包列表中的每项都必须有四个前导空格。 conda 软件包版本必须使用单个等号 (=) 来指定,而 pip 软件包版本必须使用两个等号 (==) 来指定。

在气郄系统中使用 pip 安装的依赖关系进行定制

如果要定制气郄系统中无法在本地或因特网上访问存储库服务器的环境,那么可以将 pip 包存储在项目中,并使用前缀 file:/指定依赖关系。 定制 channels: 配置可以指向空的本地通道,以避免 conda 尝试从外部存储库访存 pip

channels:
  - file:///project_data/data_asset/empty_conda_channel
  - nodefaults

dependencies:
  - pip:
    - file:///project_data/data_asset/your-package-0.1.zip

可以将空的 conda 通道设置为特别设置为:

channel_dir="/project_data/data_asset/empty_conda_channel"
!mkdir -p $channel_dir/noarch
with open(channel_dir+"/noarch/repodata.json","w") as f : 
    f.write('{ "channeldata_version": 1, "packages": {}, "subdirs": ["noarch"] }')
!bzip2 -k $channel_dir/noarch/repodata.json

有关设置本地通道的更全面描述,请参阅 创建定制通道配置 conda 以使用文件通道

添加带有内部依赖项的复杂软件包

添加许多软件包或者添加带有许多内部依赖项的复杂软件包时,conda 安装可能会花费很长时间,甚至可能停止而不显示任何错误消息。 要避免发生此情况:

  • 指定要添加的软件包的版本。 这会减少 conda 用于解析依赖项的搜索空间。
  • 增加环境的内存大小。
  • 使用特定通道,而不是 .condarc 文件中定义的缺省 conda 通道。 这可避免通过大型通道运行耗时很长的搜索。 请参阅针对 conda 进行定制

不使用缺省 conda 通道的定制示例:

# get latest version of the prophet package from the conda-forge channel
channels:
  - conda-forge    
  - nodefaults

dependencies:
  - prophet

此定制对应于 Notebook 中的以下命令:

!conda install -c conda-forge --override-channels prophet -y

为 R Notebook 添加 conda 软件包

以下示例显示如何创建用于添加要在 R Notebook 中使用的 conda 包的定制:

channels:
  - defaults

dependencies:
  - r-plotly

此定制对应于 Notebook 中的以下命令:

print(system("conda install r-plotly", intern=TRUE))

conda 中 R 包的名称通常以前缀 r-开头。 如果仅在定制中使用 plotly ,那么安装将成功,但将安装 Python 软件包而不是 R 软件包。 如果然后尝试像在 library(plotly)中一样在 R 代码中使用该包,那么这将返回错误。

正在设置环境变量

您可以通过向软件定制模板添加变量部分来设置环境中的环境变量,如以下示例中所示:

variables:
  my_var: my_value
  HTTP_PROXY: https://myproxy:3128
  HTTPS_PROXY: https://myproxy:3128
  NO_PROXY: cluster.local

该示例还显示您可以使用 variables 部分来设置环境的代理服务器。

限制: 无法使用此方法覆盖现有环境变量,例如 LD_LIBRARY_PATH。 如果要覆盖现有变量,可要求 IBM Cloud Pak for Data 管理员为您定制运行时定义并上传。 请参阅 设置用户定义的变量

最佳实践

要避免在查找软件包或解决冲突依赖项时可能产生的问题,请首先通过测试环境中的 Notebook 手动安装所需的软件包。 这样一来,您可以采用迭代方式检查是否可以安装软件包而不会出错。 验证这些软件包全部已正确安装后,为您的开发或生产环境创建定制,并将这些软件包添加到定制模板。

父主题: 添加定制