Especificação de dependências usando um arquivo de requisitos - AWS Elastic Beanstalk

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Especificação de dependências usando um arquivo de requisitos

Um aplicativo em Python típico tem dependências em outros pacotes Python de terceiros. Com a plataforma Python do Elastic Beanstalk, há algumas maneiras de especificar pacotes Python dos quais depende a aplicação.

Utilizar pip e requirements.txt

A ferramenta padrão para instalar pacotes Python é pip. Ele tem um recurso que permite especificar todos os pacotes necessários (e suas versões) em um único arquivo de requisitos. Para obter mais informações sobre o arquivo de requisitos, consulte Formato do arquivo de requisitos no site de documentação do pip.

Crie um arquivo chamado requirements.txt e coloque-o no diretório de nível superior do pacote de origem. Veja a seguir um exemplo do arquivo requirements.txt para Django.

Django==2.2 mysqlclient==2.0.3

Em seu ambiente de desenvolvimento, use o comando pip freeze para gerar o arquivo de requisitos.

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

Para garantir que o arquivo de requisitos contenha apenas os pacotes realmente usados pelo aplicativo, use um ambiente virtual que tenha somente esses pacotes instalados. Fora de um ambiente virtual, a saída de pip freeze incluirá todos os pacotes do pip instalados na máquina de desenvolvimento, bem como aqueles que acompanham o sistema operacional.

nota

Nas versões da plataforma Python da AMI do Amazon Linux, o Elastic Beanstalk não é compatível com Pipenv nem Pipfiles. Se você usar Pipenv para gerenciar as dependências do aplicativo, execute o seguinte comando para gerar um arquivo requirements.txt.

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

Para saber mais, consulte Gerar um requirements.txt na documentação do Pipenv.

Usar Pipenv e Pipfile

Pipenv é uma ferramenta moderna de empacotamento Python. Ele combina a instalação do pacote com a criação e gerenciamento de um arquivo de dependência e um virtualenv para o seu aplicativo. Para obter mais informações, consulte Pipenv: Python Dev Workflow for Humans.

O Pipenv mantém dois arquivos:

  • Pipfile — Esse arquivo contém vários tipos de dependências e requisitos.

  • Pipfile.lock — Esse arquivo contém um instantâneo da versão que permite compilações determinísticas.

Você pode criar esses arquivos em seu ambiente de desenvolvimento e incluí-los no diretório de nível superior do pacote de origem implantado no Elastic Beanstalk. Para obter mais informações sobre esses dois arquivos, consulte Exemplo de Pipfile e Pipfile.lock.

O exemplo a seguir usa o Pipenv para instalar o Django e a framework REST do Django. Esses comandos criam os arquivos Pipfile e Pipfile.lock.

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

Precedência

Se você incluir mais de um dos arquivos de requisitos descritos neste tópico, o Elastic Beanstalk usará apenas um deles. A lista a seguir mostra a precedência, em ordem decrescente.

  1. requirements.txt

  2. Pipfile.lock

  3. Pipfile

nota

A partir da versão da plataforma Amazon Linux 2 de 7 de março de 2023, se você fornecer mais de um desses arquivos, o Elastic Beanstalk emitirá uma mensagem do console informando qual dos arquivos de dependência foi usado durante uma implantação.

As etapas a seguir descrevem a lógica que o Elastic Beanstalk segue para instalar as dependências ao implantar uma instância.

  • Se houver um arquivo requirements.txt, usamos o comando pip install -r requirements.txt.

  • A partir do lançamento da plataforma Amazon Linux 2 em 7 de março de 2023, se não houver nenhum arquivo requirements.txt, mas houver um Pipfile.lock, usamos o comando pipenv sync. Antes desse lançamento, usamos pipenv install --ignore-pipfile.

  • Se não houver um arquivo requirements.txt nem um Pipfile.lock, mas houver um Pipfile, usamos o comando pipenv install --skip-lock.

  • Se nenhum dos três arquivos de requisitos for encontrado, não instalaremos nenhuma dependência do aplicativo.