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.
Especificación de 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 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
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
El siguiente ejemplo utiliza Pipenv para instalar Django y el marco REST de Django. 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.
-
requirements.txt
-
Pipfile.lock
-
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 comandopip 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 unPipfile.lock
, utilizamos el comandopipenv sync
. Antes de ese lanzamiento, usábamospipenv install --ignore-pipfile
. -
Si no hay ni un archivo
requirements.txt
ni unPipfile.lock
, pero hay unPipfile
, entonces usamos el comandopipenv install --skip-lock
. -
Si no se encuentra ninguno de los tres archivos de requisitos, no instalamos ninguna de las dependencias de la aplicación.