Gerenciar os pacotes do Python necessários com requirements.txt

Caso você compartilhe um projeto do Python com outras pessoas ou use um sistema de compilação com o intuito de produzir o aplicativo em Python, precisará especificar todos os pacotes externos necessários. Ao planejar copiar o projeto para outros locais necessários para restaurar um ambiente, também é preciso definir os pacotes dependentes necessários.

A abordagem recomendada para especificar pacotes externos dependentes do Python é o uso de um arquivo de requisitos (readthedocs.org). Esse arquivo oferece uma lista de comandos do PIP que instalam todas as versões necessárias dos pacotes dependentes para o projeto. O comando mais comum é pip freeze > requirements.txt. Esse comando registra a lista de pacotes atuais do ambiente no arquivo requirements.txt.

Um arquivo de requisitos contém versões precisas de todos os pacotes instalados. É possível utilizar arquivos de requisitos para congelar os requisitos de um ambiente. Ao utilizar versões precisas dos pacotes, você conseguirá reproduzir facilmente seu ambiente em outra máquina. O arquivo de requisitos inclui até os pacotes instalados com uma série de versões, como uma dependência de outro pacote ou com um instalador que não seja o PIP.

Pré-requisitos

  • Ter o Visual Studio instalado e compatível com cargas de trabalho do Python. Para obter mais informações, confira Instalar o suporte ao Python no Visual Studio.

  • Um arquivo de requisitos. É possível utilizar um arquivo de requisitos existente ou gerar um arquivo, conforme as instruções descritas neste artigo.

Tecnicamente, é possível utilizar qualquer nome de arquivo para rastrear os requisitos. Entretanto, o Visual Studio oferece suporte específico ao arquivo de requisitos chamado “requirements.txt”. Utilize o argumento -r <full path to file> ao instalar um pacote com o intuito de especificar um nome de sua preferência para o arquivo.

Instalar as dependências listadas em requirements.txt

Caso carregue um projeto com um arquivo requirements.txt, você pode instalar todas as dependências de pacote listadas no arquivo.

  1. No Gerenciador de Soluções, expanda o projeto, depois expanda o nó Ambientes do Python.

  2. Encontre o nó do ambiente no qual deseja instalar os pacotes. Clique com o botão direito do mouse no nó e escolha Instalar do requirements.txt.

    Captura de tela mostrando como instalar pacotes Python de um arquivo de texto de requisitos no Visual Studio 2019.

    Captura de tela mostrando como instalar pacotes Python de um arquivo de texto de requisitos no Visual Studio 2022.

  3. Você pode monitorar o processo de instalação dos pacotes na janela Saída:

    Captura de tela mostrando a saída da instalação dos pacotes Python de um arquivo de texto de requisitos.

    A saída lista todos os pacotes necessários que foram instalados e todas as atualizações necessárias para os comandos do PIP afetados, bem como a disponibilidade de versões do PIP mais recentes.

Instalar as dependências em um ambiente virtual

Também é possível instalar as dependências de pacotes do Python em um ambiente virtual existente.

  1. No Gerenciador de Soluções, expanda o projeto, depois expanda o nó Ambientes do Python.

  2. Encontre o nó do ambiente virtual no qual deseja instalar os pacotes. Clique com o botão direito do mouse no nó e escolha Instalar do requirements.txt.

Caso precise criar um ambiente virtual, consulte Usar ambientes virtuais.

Gerar o arquivo requirements.txt

Se todos os pacotes do Python necessários ao projeto já estiverem instalados em um ambiente, você poderá gerar o arquivo requirements.txt no Visual Studio.

  1. No Gerenciador de Soluções, expanda o projeto, depois expanda o nó Ambientes do Python.

  2. Encontre o nó do ambiente para o qual deseja gerar o arquivo de requisitos. Clique com o botão direito do mouse no nó e escolha Gerar o requirements.txt.

    Captura de tela mostrando como gerar um arquivo de texto de requisitos para dependências de pacote Python no Visual Studio 2019.

    Captura de tela mostrando como gerar um arquivo de texto de requisitos para dependências de pacote Python no Visual Studio 2022.

Atualizar ou adicionar as entradas de um arquivo requirements.txt existente

Se o arquivo requirements.txt já existir, o Visual Studio exibirá uma solicitação com diversas opções:

Captura de tela da solicitação exibida quando o arquivo de texto de requisitos já existe, com opções para atualizar ou adicionar entradas ou substituir o arquivo.

  • Substituir o arquivo inteiro: substitui todos os itens, comentários e opções definidos no arquivo requirements.text.
  • Atualizar as entradas existentes: atualiza os especificadores de versão no arquivo requirements.text para que correspondam à versão instalada atualmente.
  • Atualizar e adicionar entradas: atualiza os requisitos existentes no arquivo requirements.text e acrescenta todos os novos requisitos de pacotes ao final do arquivo.

O Visual Studio executa o pip a fim de detectar os requisitos atuais de pacotes para o ambiente, depois atualiza o arquivo requirements.txt com base na sua seleção.

Instalar manualmente as dependências de pacotes

Se o PIP não instalar uma dependência de pacote definida no arquivo requirements.txt, toda a instalação falhará.

Há duas opções para resolver esse problema:

  • Edite manualmente o arquivo requirements.txt a fim de excluir o pacote com falha, depois execute o processo de instalação novamente.

  • Use as opções de comando do PIP para fazer referência a uma versão instalável do pacote.

Atualizar o arquivo de requisitos com pip wheel

Caso use o comando pip wheel para compilar uma dependência, você poderá adicionar a opção --find-links <path> ao arquivo requirements.txt.

  1. Chame o comando pip wheel a fim de compilar a lista de dependências necessárias:

    pip wheel azure
    

    A saída mostra os wheels compilados para os pacotes coletados:

    Downloading/unpacking azure
        Running setup.py (path:C:\Project\env\build\azure\setup.py) egg_info for package azure
    
    Building wheels for collected packages: azure
        Running setup.py bdist_wheel for azure
        Destination directory: c:\project\wheelhouse
    Successfully built azure
    Cleaning up...
    
  2. Acrescente as opções find-links e no-index com o requisito de versão do pacote ao arquivo requirements.txt:

    type requirements.txt
    --find-links wheelhouse
    --no-index
    azure==0.8.0
    
  3. Execute o processo de instalação do PIP com o arquivo de requisitos atualizado:

    pip install -r requirements.txt -v
    

    A saída monitora o progresso do processo de instalação:

    Downloading/unpacking azure==0.8.0 (from -r requirements.txt (line 3))
        Local files found: C:/Project/wheelhouse/azure-0.8.0-py3-none-any.whl
    Installing collected packages: azure
    Successfully installed azure
    Cleaning up...
        Removing temporary dir C:\Project\env\build...