Amazon SageMaker ノートブックインスタンスの Conda 環境に Python パッケージをインストールするにはどうすればよいですか?

最終更新日: 2020 年 10 月 8 日

特定の Conda 環境に Python パッケージをインストールしたり、インストールされたパッケージのバージョンを確認したり、永続的な Conda 環境を作成したいと考えています。

解決方法

特定の Conda 環境に Python パッケージをインストールする

正しい Conda 環境を指定せずに、pip または Conda を使用してターミナルに Python ライブラリをインストールすると、実行中のノートブックにその Python パッケージをインポートしたときに ModuleNotFoundError が表示されます。このエラーは、正しい Conda 環境に Python パッケージをインストールしていないために発生します。Python パッケージを正しい Conda 環境にインストールするには、ターミナルから pip install または conda install を実行する前に環境をアクティベートします。例:

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

ノートブックのセルでこのコマンドを実行するには、感嘆符 (「!」) をコマンドの先頭に入力します。これにより、コマンドがノートブックからシェルコマンドとして実行され、パッケージが必ず現在の Jupyter カーネルにインストールされるようになります。例:

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

注: ノートブックセルで conda install を実行すると、インタラクティブレスポンスを入力できません。Conda を使用してノートブックのセルにパッケージをインストールするには、-y を明示的に渡す必要があります。それ以外の場合、コマンドはハングアップし、ユーザーの確認を待ちます。

または pip install を使用します。

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

場合によっては、pip がパッケージの依存関係の一部をインストールできないことがあります。このような場合は、pip の代わりに Conda を使用してパッケージをインストールします。パッケージをインストールする前に、必要なすべてのコンポーネントが満たされていることが Conda によって検証されます。詳細については、Conda ドキュメントの「Understanding Conda and 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 で保持されているか確認する方法を教えてください。」を参照してください。