Spécification des dépendances à l'aide d'un fichier Requirements - AWS Elastic Beanstalk

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Spécification des dépendances à l'aide d'un fichier Requirements

Une application Python classique comporte des dépendances par rapport à d'autres packages Python tiers. La plateforme Python Elastic Beanstalk vous permet de spécifier les paquets Python dont dépend votre application de plusieurs façons.

Utilisation de pip et requirements.txt

L'outil standard pour installer les packages Python est pip. Il s'agit d'une fonctionnalité qui vous permet de spécifier tous les packages dont vous avez besoin (ainsi que leurs versions) dans un fichier Requirements unique. Pour plus d'informations sur le fichier d'exigences, consultez Format du fichier d'exigences (français non garanti) sur le site web de documentation de pip.

Créez un fichier requirements.txt et placez-le dans le répertoire de niveau supérieur de votre solution groupée source. Voici un exemple de fichier requirements.txt pour Django.

Django==2.2 mysqlclient==2.0.3

Dans votre environnement de développement, vous pouvez utiliser la commande pip freeze pour générer votre fichier Requirements.

~/my-app$ pip freeze > requirements.txt

Pour vous assurer que votre fichier Requirements contient uniquement des packages qui sont réellement utilisés par votre application, utilisez un environnement virtuel sur lequel seuls ces packages sont installés. En dehors d'un environnement virtuel, le résultat de pip freeze comprendra tous les packages pip installés sur votre ordinateur de développement, y compris ceux livrés avec votre système d'exploitation.

Note

Sur les versions de la plateforme AMI Python Amazon Linux, Elastic Beanstalk ne prend pas en charge nativement Pipenv ou Pipfiles. Si vous utilisez Pipenv pour gérer les dépendances de votre application, exécutez la commande suivante pour générer un fichier requirements.txt.

~/my-app$ pipenv lock -r > requirements.txt

Pour en savoir plus, consultez Generating a requirements.txt dans la documentation.

Utilisation de Pipenv et Pipfile

Pipenv est un outil d'emballage Python moderne. Il combine l'installation de packages avec la création et la gestion d'un fichier de dépendance et d'un environnement virtuel pour votre application. Pour plus d'informations, consultez Pipenv: Python Dev Workflow for Humans.

Pipenv maintient deux fichiers :

  • Pipfile – Ce fichier contient différents types de dépendances et d'exigences.

  • Pipfile.lock – Ce fichier contient un instantané de version qui permet des créations déterministes.

Vous pouvez créer ces fichiers dans votre environnement de développement et les inclure dans le répertoire de premier niveau de la solution groupée source que vous déployez sur Elastic Beanstalk. Pour plus d'informations sur ces deux fichiers, consultez Exemples de Pipfile et de Pipfile.lock (français non garanti).

L'exemple suivant utilise Pipenv pour installer Django et le framework REST Django. Ces commandes créent les fichiers Pipfile et Pipfile.lock.

~/my-app$ pipenv install django ~/my-app$ pipenv install djangorestframework

Priorité

Si vous incluez plusieurs fichiers d'exigences décrits dans cette rubrique, Elastic Beanstalk n'en utilise qu'un. La liste suivante montre la priorité, par ordre décroissant.

  1. requirements.txt

  2. Pipfile.lock

  3. Pipfile

Note

À partir de la version de la plateforme Amazon Linux 2 du 7 mars 2023, si vous fournissez plusieurs de ces fichiers, Elastic Beanstalk émettra un message de console indiquant lequel des fichiers de dépendances a été utilisé lors d'un déploiement.

Les étapes suivantes décrivent la logique suivie par Elastic Beanstalk pour installer les dépendances lors du déploiement d'une instance.

  • S'il existe un fichier requirements.txt, nous utilisons la commande pip install -r requirements.txt.

  • À partir de la version de la plateforme Amazon Linux 2 du 7 mars 2023, s'il n'y a pas de fichier requirements.txt, mais qu'il y a un fichier Pipfile.lock, nous utilisons la commande pipenv sync. Avant cette version, nous utilisions pipenv install --ignore-pipfile.

  • S'il n'y a ni fichier requirements.txt ni fichier Pipfile.lock, mais qu'il y en a un fichier Pipfile, on utilise la commande pipenv install --skip-lock.

  • Si aucun des trois fichiers d'exigences n'est trouvé, nous n'installons aucune dépendance d'application.