

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
<a name="python-configuration-requirements"></a>

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`
<a name="python-configuration-requirements.txt"></a>

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](https://pip.pypa.io/en/latest/reference/requirements-file-format/#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](python-development-environment.md#python-common-setup-venv) 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](https://pipenv.readthedocs.io/en/latest/advanced/#generating-a-requirements-txt) en la documentación de Pipenv.

## Use Pipenv y `Pipfile`
<a name="python-configuration-requirements.pipenv"></a>

Pipenv es una herramienta de empaquetado de Python moderna. Combina la instalación de paquetes con la creación y administració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](https://pipenv.readthedocs.io/en/latest/).

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](https://pipenv.pypa.io/en/latest/basics/#).



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
<a name="python-configuration-requirements.precedence"></a>

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`

1. `Pipfile.lock`

1. `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.