Especificar las dependencias mediante un archivo de requisitos en Elastic Beanstalk - AWS Elastic Beanstalk

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Especificar las dependencias mediante un archivo de requisitos en Elastic Beanstalk

En este tema se describe cómo configurar la aplicación para instalar otros paquetes de Python que necesite. Una aplicación de Python típica tiene dependencias de otros paquetes de Python de terceros. Con la plataforma Python de Elastic Beanstalk, tiene varias formas de especificar los paquetes de Python de los que depende su aplicación.

Utilice pip y requirements.txt

La herramienta estándar para instalar paquetes de Python es pip. Esta tiene una característica que permite especificar todos los paquetes necesarios (así como las versiones) en un único archivo de requisitos. Para obtener más información sobre el archivo de requisitos, consulte Requirements File Format en el sitio web de documentación de pip.

Cree un archivo llamado requirements.txt y sitúelo en el directorio principal del paquete de código fuente. A continuación se muestra un ejemplo del archivo requirements.txt para Django.

Django==2.2 mysqlclient==2.0.3

En el entorno de desarrollo, puede utilizar el comando pip freeze para generar el archivo de requisitos.

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

Para asegurarse de que el archivo de requisitos solo contiene los paquetes que se utilizan realmente en la aplicación, utilice un entorno virtual que solo tenga instalado esos paquetes. Fuera del entorno virtual, la salida de pip freeze incluirá todos los paquetes de pip instalados en el equipo de desarrollo, incluidos aquellos que venían con el sistema operativo.

nota

En las versiones de la plataforma AMI Python de Amazon Linux, Elastic Beanstalk no admite Pipenv ni Pipfiles de forma nativa. Si utiliza Pipenv para administrar las dependencias de la aplicación, ejecute el siguiente comando para generar un archivo requirements.txt.

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

Para obtener más información, consulte Generación de un requirements.txt en la documentación de Pipenv.

Use Pipenv y Pipfile

Pipenv es una herramienta de empaquetado de Python moderna. Combina la instalación de paquetes con la creación y gestión de un archivo de dependencia y un virtualenv para su aplicación. Para obtener más información, consulte Pipenv: Python Dev Workflow for Humans.

Pipenv mantiene dos archivos:

  • Pipfile: este archivo contiene varios tipos de dependencias y requisitos.

  • Pipfile.lock: este archivo contiene una instantánea de la versión que permite compilaciones deterministas.

Puede crear estos archivos en su entorno de desarrollo e incluirlos en el directorio de nivel superior del paquete de origen que se implementa en Elastic Beanstalk. Para obtener más información sobre estos dos archivos, visite Example Pipfile and Pipfile.lock.

En el siguiente ejemplo, se usa Pipenv para instalar Django y el marco de trabajo de Django. REST Estos comandos crean los archivos Pipfile y Pipfile.lock.

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

Prioridad

Si incluye más de uno de los archivos de requisitos descritos en este tema, Elastic Beanstalk utiliza solo uno de ellos. La siguiente lista muestra la prioridad, en orden descendente.

  1. requirements.txt

  2. Pipfile.lock

  3. Pipfile

nota

A partir de la versión de la plataforma Amazon Linux 2 del 7 de marzo de 2023, si proporciona más de uno de estos archivos, Elastic Beanstalk emitirá un mensaje en la consola donde se indicará cuál de los archivos de dependencia se utilizó durante la implementación.

En los siguientes pasos se describe la lógica que sigue Elastic Beanstalk para instalar las dependencias al implementar una instancia.

  • Si hay un archivo requirements.txt, utilizamos el comando pip install -r requirements.txt.

  • A partir del lanzamiento de la plataforma Amazon Linux 2 del 7 de marzo de 2023, si no hay ningún archivo requirements.txt, pero hay un Pipfile.lock, utilizamos el comando pipenv sync. Antes de ese lanzamiento, usábamos pipenv install --ignore-pipfile.

  • Si no hay ni un archivo requirements.txt ni un Pipfile.lock, pero hay un Pipfile, entonces usamos el comando pipenv install --skip-lock.

  • Si no se encuentra ninguno de los tres archivos de requisitos, no instalamos ninguna de las dependencias de la aplicación.