Especificar dependencias mediante un archivo de requisitos - AWS Elastic Beanstalk

Especificar dependencias mediante un archivo de requisitos

Una aplicación de Python típica tiene dependencias de otros paquetes de Python de terceros. Con la plataforma Python de Elastic Beanstalk, tiene algunas formas de especificar paquetes 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.

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 Python AMI de Amazon Linux, Elastic Beanstalk no admite de forma nativa Pipenv o Pipfiles. 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. Pipenv mantiene dos archivos: Pipfile contiene varios tipos de dependencias y requisitos, y Pipfile.lock es una instantánea de versión que permite compilaciones deterministas. Para obtener más información, consulte Pipenv: Python Dev Workflow for Humans.

Las versiones de la plataforma de Python Amazon Linux 2 admiten archivos de requisitos basados en Pipenv. Los crea en su entorno de desarrollo y los incluye en el paquete de origen que se implementa en Elastic Beanstalk.

nota

Las versiones de la plataforma Python AMI de Amazon Linux (anteriores a Amazon Linux 2) no son compatibles con Pipenv y Pipfile.

El siguiente ejemplo utiliza Pipenv para instalar Django y el marco REST de Django.

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

Estos comandos crean los archivos Pipfile y Pipfile.lock. Coloque Pipfile en el directorio de nivel superior del paquete de código fuente para obtener las versiones más recientes de los paquetes de dependencias instaladas en las instancias de su entorno. Alternativamente, incluya Pipfile.lock para obtener un conjunto constante de versiones de paquetes que reflejen su entorno de desarrollo en el momento de la creación del archivo.

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

  1. requirements.txt

  2. Pipfile.lock

  3. Pipfile