Comment installer des packages Python dans un environnement Conda sur une instance de bloc-notes Amazon SageMaker ?

Dernière mise à jour : 08/10/2020

Je souhaite installer des packages Python dans un environnement Conda spécifique, vérifier les versions des packages installés ou créer un environnement Conda persistant.

Résolution

Installer des packages Python dans un environnement Conda spécifique

Si vous utilisez pip ou Conda pour installer des bibliothèques Python sur le terminal sans spécifier l'environnement Conda approprié, vous obtenez une erreur ModuleNotFoundError lors de l'importation de ce package Python dans le bloc-notes que vous exécutez. Cela est dû au fait que vous n'installez pas les packages Python dans l'environnement Conda approprié. Pour installer les packages Python dans l'environnement Conda approprié, activez l'environnement avant d'exécuter pip install ou conda install à partir du terminal. Exemple :

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

Pour exécuter cette commande dans une cellule de bloc-notes, ajoutez un point d'exclamation (« ! ») au début de la commande. Cela oblige la commande à s'exécuter en tant que commande shell à partir du bloc-notes et garantit que le package sera installé dans le kernel Jupyter actuel. Exemple :

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

Remarque : lorsque vous exécutez conda install dans une cellule de bloc-notes, vous ne pouvez pas saisir de réponse interactive. Pour installer des packages dans une cellule de bloc-notes à l'aide de Conda, vous devez fournir explicitement -y. Sans quoi, la commande se bloque et attend la confirmation de l'utilisateur.

Sinon, utilisez pip install :

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

Parfois, pip peut ne pas installer certaines des dépendances du package. Dans ces cas-là, utilisez Conda pour installer des packages au lieu de pip. Conda vérifie que tous les composants requis sont satisfaits avant d'installer les packages. Pour plus d'informations, consultez la section Understanding Conda and pip dans la documentation Conda.

Autres commandes utiles

Pour afficher l'environnement Conda préconstruit, exécutez l'une des commandes suivantes dans le terminal d'instance de bloc-notes :

$ conda env list
$ conda info --envs

Exemple de sortie :

# 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

Pour voir les kernels installés sur le bloc-notes :

sh-4.2$ ipython kernelspec list

Pour vérifier la version d'un package installé dans un environnement Conda, exécutez cette commande dans le terminal d'instance de bloc-notes :

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

Vous pouvez également vérifier la version du package dans la cellule du bloc-notes :

import pandas as pd
pd.__version__

Créer un environnement Conda persistant

Lorsque vous arrêtez un bloc-notes, SageMaker résilie l'instance Amazon Elastic Compute Cloud (Amazon EC2) du bloc-notes. Les packages installés dans l'environnement Conda ne persistent pas entre les sessions. Le répertoire /home/ec2-user/SageMaker est le seul chemin qui persiste entre les sessions d'instance de bloc-notes. Il s'agit du répertoire du volume Amazon Elastic Block Store (Amazon EBS) du bloc-notes. Si vous souhaitez que vos bibliothèques persistent entre les sessions, consultez la section Comment être sûr que les bibliothèques installées manuellement persistent dans Amazon SageMaker si la configuration de mon cycle de vie expire lorsque j'essaie d'installer les bibliothèques ?