Porque não foi criado ou ao menos falado sobre o arquivo requeriments.tx e dos seus benefícios ou não?
Porque não foi criado ou ao menos falado sobre o arquivo requeriments.tx e dos seus benefícios ou não?
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!