1
resposta

Ambiente virtual

Porque não foi criado ou ao menos falado sobre o arquivo requeriments.tx e dos seus benefícios ou não?

1 resposta

Oii Josimar, como você está? Espero que esteja bem ^-^

Infelizmente não sei te dizer o motivo do instrutor não ter abordado sobre esse assunto, mas falando um pouquinho do arquivo requirements.txt, ele serve para replicarmos o nosso ambiente de desenvolvimento em outra máquina ou até mesmo em outra pasta. Não é comum compartilharmos o projeto com a pasta "venv" que se refere ao ambiente virtual, pois essa pasta contém informações sobre as bibliotecas de dentro do nosso próprio ambiente e a estrutura dela varia de acordo com o sistema operacional. Então, ao invés de compartilharmos junto ao projeto a pasta "venv", compartilhamos junto ao projeto o arquivo requirements.txt.

Mas o que é esse arquivo?

Esse arquivo contém os nomes das bibliotecas e suas respectivas versões que estão instaladas em nosso projeto. Um exemplo de requirements.txt:

asgiref==3.3.4
beautifulsoup4==4.8.2
Django==3.2.3
urllib3==1.25.8

Ele é importante por agilizar a instalação das bibliotecas em outra máquina, fazendo a instalação de todas as dependências de forma automática.

Imagina que você receba um projeto que dependa de 5 bibliotecas e você terá que instalar uma a uma em seu computador através do comando pip install. Para 5 bibliotecas, executar manualmente o pip install não demanda tanto tempo, mas imagine para um projeto que contém 50 dependências... É isso que o requirements.txt resolve, pois através dele com um único comando todas as bibliotecas serão instaladas automaticamente. O comando é:

pip install -r requirements.txt

A flag -r significa read, ou seja, o comando pip irá ler o arquivo requirements.txt e instalar tudo que existe dentro dele.

Agora que sabemos o que é esse arquivo e sua importância, como podemos criá-lo?

Para criar um arquivo requirements.txt precisamos digitar o seguinte comando:

pip freeze > requirements.txt

O comando pip freeze serve para listarmos os pacotes instalados no ambiente e suas respectivas versões. Através do símbolo > direcionamos a saída desse comando para o arquivo requirements.txt.

Uma das desvantagens de gerar o arquivo dessa forma é que o arquivo requirements.txt pode ficar com excesso de informações, uma vez que ao utilizarmos o comando pip freeze ele irá listar as bibliotecas instaladas e também, as dependências da biblioteca. Por exemplo, suponha que para o Django ser instalado, ele dependa de outras bibliotecas, como a asgiref e a urllib3 , então no nosso requirements também terão essas bibliotecas que são dependências da nossa biblioteca principal e isso é ruim porque se torna difícil abrir o arquivo requirements.txt e analisar quais são as bibliotecas principais que estamos utilizando.

Além disso, o comando pip freeze inclui pacotes específicos do sistema operacional, o que pode dificultar usuários de Linux, Mac e Windows replicar o mesmo arquivo requirements.txt para a instalação dos pacotes.

Uma solução para isso é criar o arquivo requirements.txt a mão, escrevendo o nome das bibliotecas principais no arquivo. Um detalhe é que não precisamos necessariamente colocar a versão da biblioteca nesse arquivo, pois, caso não haja especificação, a mais atual será baixada e para alguns projetos a versão não terá impacto.

No entanto, é muito comum o uso do pip freeze > requirements.txt, mas particularmente, eu recomendo que caso tenha possibilidade de fazê-lo manualmente adicionando cada pacote e suas versões, faça.

Qualquer dúvida estou por aqui.

Abraços!