如何在 Amazon SageMaker 笔记本实例上将 Python 软件包安装到 Conda 环境?

上次更新日期:2020 年 10 月 8 日

我想将 Python 软件包安装到特定的 Conda 环境,检查已安装的软件包版本,或创建持久性 Conda 环境。

解决方法

将 Python 软件包安装到特定的 Conda 环境

如果您使用 pip 或 Conda 在终端上安装 Python 库而不指定正确的 Conda 环境,则在将该 Python 软件包导入到正在运行的笔记本中时会出现 ModuleNotFoundError 错误。这是因为您没有在正确的 Conda 环境中安装 Python 软件包。要在正确的 Conda 环境中安装 Python 软件包,请在从终端运行 pip 安装conda 安装之前激活该环境。示例:

sh-4.2$ source activate python3
(python3) sh-4.2$ pip install theano
(python3) sh-4.2$ source deactivate
(JupyterSystemEnv) sh-4.2$

要在笔记本单元格中运行此命令,请在命令开头添加感叹号 ("!")。这将强制该命令从笔记本作为 shell 命令运行,并确保该软件包已安装在当前的 Jupyter 内核中。示例:

import sys
!conda install -y --prefix {sys.prefix} theano

注意:在笔记本单元格中运行 conda 安装时,无法输入交互式响应。要使用 Conda 在笔记本单元格中安装软件包,您必须显式传递 -y。否则,该命令将挂起并等待用户确认。

或者,使用 pip 安装

import sys
!{sys.executable} -m pip install theano

有时,pip 可能无法安装某些软件包的依赖关系。发生这种情况时,请使用 Conda 而不是 pip 来安装软件包。Conda 会在安装软件包之前验证是否满足所有必需组件的要求。有关详细信息,请参阅 Conda 文档中的了解 Conda 和 pip

其他实用命令

要查看预构建的 Conda 环境,请在笔记本实例终端中运行以下命令之一:

$ conda env list
$ conda info --envs

示例输出:

# conda environments:
#
base                     /home/ec2-user/anaconda3
JupyterSystemEnv      *  /home/ec2-user/anaconda3/envs/JupyterSystemEnv
R                        /home/ec2-user/anaconda3/envs/R
amazonei_mxnet_p27       /home/ec2-user/anaconda3/envs/amazonei_mxnet_p27
amazonei_mxnet_p36       /home/ec2-user/anaconda3/envs/amazonei_mxnet_p36
amazonei_tensorflow_p27     /home/ec2-user/anaconda3/envs/amazonei_tensorflow_p27
amazonei_tensorflow_p36     /home/ec2-user/anaconda3/envs/amazonei_tensorflow_p36
chainer_p27              /home/ec2-user/anaconda3/envs/chainer_p27
chainer_p36              /home/ec2-user/anaconda3/envs/chainer_p36
mxnet_p27                /home/ec2-user/anaconda3/envs/mxnet_p27
mxnet_p36                /home/ec2-user/anaconda3/envs/mxnet_p36
python2                  /home/ec2-user/anaconda3/envs/python2
python3                  /home/ec2-user/anaconda3/envs/python3
pytorch_p27              /home/ec2-user/anaconda3/envs/pytorch_p27
pytorch_p36              /home/ec2-user/anaconda3/envs/pytorch_p36
tensorflow_p27           /home/ec2-user/anaconda3/envs/tensorflow_p27
tensorflow_p36           /home/ec2-user/anaconda3/envs/tensorflow_p36

要查看笔记本上安装的内核,请执行以下操作:

sh-4.2$ ipython kernelspec list

要检查 Conda 环境中安装的软件包版本,请在笔记本实例终端中运行以下命令:

(python3) sh-4.2$ pip freeze | grep pandas

或者,要在笔记本单元格中检查软件包版本,请执行以下操作:

import pandas as pd
pd.__version__

创建持久性 Conda 环境

停止笔记本时,SageMaker 会终止该笔记本的 Amazon Elastic Compute Cloud (Amazon EC2) 实例。Conda 环境中安装的软件包不会在会话之间保留。在笔记本实例会话之间保留的路径只有 /home/ec2-user/SageMaker 目录。这是笔记本的 Amazon Elastic Block Store (Amazon EBS) 卷的目录。如果您希望在会话之间保留您的库,请参阅如果在我尝试安装库时出现生命周期配置超时,如何确保手动安装的库在 Amazon SageMaker 中持久存在?