J’utilise une instance Amazon Elastic Compute Cloud (Amazon EC2) qui s’exécute sur Amazon Linux 2. Je souhaite créer un environnement virtuel Python 3 isolé avec la bibliothèque Boto 3 sur mon instance.
Résolution
Installation de Python 3 pour Amazon Linux 2
-
Utilisez le protocole SSH pour vous connecter à votre instance Linux EC2. Pour en savoir plus, consultez la section Connexion à une instance Linux depuis Linux ou macOS via SSH.
-
Lancez une commande yum check/update pour actualiser l’index du package. La commande check/update vérifie également les mises à jour disponibles. Il n’est pas nécessaire de mettre à jour d’autres packages pour créer l’environnement Python 3.
-
Pour déterminer si Python 3 est déjà installé sur votre hôte, exécutez la commande list installed :>
[ec2-user ~]$ yum list installed | grep -i python3
Si Python 3 n’est pas installé, vous obtenez la sortie suivante :
[ec2-user ~]$ yum list installed | grep -i python3[ec2-user ~]$
[ec2-user ~]$ python3
-bash: python3: command not found
Si Python 3 est installé, vous obtenez la sortie suivante :
[ec2-user ~]$ yum list installed | grep -i python3
python3.x86_64 3.7.4-1.amzn2.0.4 @amzn2-core
python3-libs.x86_64 3.7.4-1.amzn2.0.4 @amzn2-core
python3-pip.noarch 9.0.3-1.amzn2.0.1 @amzn2-core
python3-setuptools.noarch 38.4.0-3.amzn2.0.6 @amzn2-core
[ec2-user ~]$ whereis python3
python3: //usr/bin/python3 /usr/bin/python3.7 /usr/bin/python3.7m /usr/lib/python3.7 /usr/lib64/python3.7 /usr/include/python3.7m /usr/share/man/man1/python3.1.gz
-
Si Python 3 n’est pas installé, vous pouvez installer le package avec le gestionnaire de packages yum :
[ec2-user ~]$ sudo yum install python3 -y
Création d’un environnement virtuel dans le répertoire de base ec2-user
La commande suivante permet de créer le répertoire de l’application contenant l’environnement virtuel. Vous pouvez remplacer my_app par un autre nom. Si vous modifiez my_app, le nouveau nom choisi doit alors apparaître dans les étapes restantes :
[ec2-user ~]$ python3 -m venv my_app/env
Activation de l’environnement virtuel et installation de Boto 3
-
Vous devez associer un Rôle de gestion des identités et des accès (IAM) AWS à votre instance EC2 et des stratégies d’autorisation permettant à Boto 3 d’interagir avec les API AWS. Pour connaître les autres méthodes d’authentification, veuillez consulter la documentation relative à Boto 3.
-
Pour activer votre environnement, recherchez le fichier d’activation dans le répertoire bin situé sous le répertoire de votre projet :
[ec2-user ~]$ source ~/my_app/env/bin/activate(env) [ec2-user ~]$
-
Vérifiez que le dernier module pip est bien installé sur votre environnement :
(env) [ec2-user ~]$ pip install pip --upgrade
-
Pour installer la bibliothèque Boto 3 dans votre environnement virtuel, utilisez la commande pip :
(env) [ec2-user ~]$ pip install boto3
-
Exécutez Python :
(env) [ec2-user ~]$ pythonPython 3.7.4 (default, Dec 13 2019, 01:02:18)
[GCC 7.3.1 20180712 (Red Hat 7.3.1-6)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>>
-
Importez la bibliothèque Boto 3, puis vérifiez qu’elle fonctionne correctement. Cette étape exige que vous ayez configuré les politiques d’autorisation à l’étape 1. L’exemple de sortie suivant répertorie tous les compartiments Amazon Simple Storage Service (Amazon S3) du compte :
>>> import boto3 # no error>>> s3 = boto3.resource('s3')
>>> for bucket in s3.buckets.all():
print(bucket.name)
>>> exit()
-
Pour quitter l’environnement virtuel, exécutez la commande de désactivation :
(env) [ec2-user ~]$ deactivate
[ec2-user ~]$
-
Pour activer automatiquement l’environnement virtuel lorsque vous vous connectez, ajoutez-le au fichier ~/.bashrc :
[ec2-user ~]$ echo "source ${HOME}/my_app/env/bin/activate" >> ${HOME}/.bashrc
-
Vous pouvez exécuter le fichier ~/.bashrc dans votre répertoire personnel pour recharger l’environnement bash de votre environnement. Votre environnement virtuel sera alors automatiquement activé. L’invite reflète la modification (env). Cette modification s’appliquera également à toutes les sessions SSH futures :
[ec2-user ~]$ source ~/.bashrc
(env) [ec2-user ~]$
Informations connexes
Mise à jour du logiciel d’instance sur une instance Amazon Linux
Lancement d’une instance à l’aide de l’assistant de lancement d’instance
Virtualenv sur le site web de Python Packaging Authority (PYPA)