Módulo 6 - Ambientes virtuais e pip
requirements.txt: a receita do projeto
11 min de leitura · por Cesar Gargiulo, revisado pela equipe ValorFinal e GuardiaSec · Atualizado em 01/07/2026
O que você vai aprender
- Gerar o requirements.txt com pip freeze.
- Recriar o ambiente com pip install -r requirements.txt.
- Entender por que fixar versões deixa o projeto reproduzível.
- Saber o que versionar e o que deixar de fora.
Ouvir o resumo desta aula
Um recap de cerca de 2 minutos na voz do Valim, para ouvir no trânsito ou na academia.
Ler a transcrição do resumo
Resumo da aula: requirements.txt: a receita do projeto.
Os objetivos desta aula. Gerar o requirements.txt com pip freeze. Recriar o ambiente com pip install -r requirements.txt. Entender por que fixar versões deixa o projeto reproduzível. Saber o que versionar e o que deixar de fora.
Veja o essencial, parte por parte.
Congelar as dependências. Gere a lista com: pip freeze > requirements.txt
Recriar o ambiente a partir da receita. A receita só brilha quando você a aplica.
O que versionar e o que deixar de fora. Instalou um pacote novo? Rode pip freeze > requirements.txt de novo para atualizar a lista.
Esse foi o resumo do essencial. Para se aprofundar, leia a aula completa e responda os exercícios.
Congelar as dependências
Você já sabe listar os pacotes com pip list. Agora vem o passo que transforma essa lista numa receita guardável. O comando pip freeze mostra os pacotes instalados num formato pronto para reinstalar, com a versão fixada em cada um. Sozinho, ele só imprime na tela. A mágica é redirecionar essa saída para um arquivo com o sinal de maior, criando o requirements.txt. A partir daí, esse arquivo carrega a lista exata do que o projeto usa.
# com o ambiente ativo, gere a receita do projeto
pip freeze > requirements.txtpip freeze imprime as versões; o > grava tudo no arquivo requirements.txt.
Abra o requirements.txt em qualquer editor e você verá algo direto: uma linha por pacote, no formato nome==versão. O sinal de igual duplo trava a versão exata. Não é uma faixa aproximada; é aquela versão específica que funcionou no seu projeto. Essa precisão é justamente o valor do arquivo. Ele não diz apenas quais bibliotecas o projeto usa, e sim quais versões, para que o comportamento seja o mesmo em qualquer lugar que a receita for aplicada.
certifi==2024.x
charset-normalizer==3.x
idna==3.x
requests==2.x
urllib3==2.xConteúdo típico do requirements.txt: cada pacote com a versão travada.
Recriar o ambiente a partir da receita
A receita só brilha quando você a aplica. Imagine que você trocou de computador, ou baixou o projeto de um repositório, ou apagou a pasta .venv para começar limpo. Você recria o ambiente do zero com um único comando: pip install -r requirements.txt. O -r quer dizer requirements, ou seja, instale tudo que está listado neste arquivo. O pip lê o requirements.txt linha por linha e instala cada pacote na versão exata indicada, montando a despensa idêntica à original.
python -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txtDo zero: crie o ambiente, ative e instale tudo da receita de uma vez.
Sem requirements.txt
- Instalar cada pacote de memória, um a um
- Risco de esquecer uma dependência
- Cada pessoa acaba com versões diferentes
- Bug que só acontece na máquina de alguém
Com requirements.txt
- Um comando recria o ambiente inteiro
- Nada é esquecido, tudo está listado
- Todos ficam nas mesmas versões
- Comportamento igual em qualquer computador
Esse é o momento em que o esforço de manter a receita se paga. Sem ela, quem pega o seu projeto precisa adivinhar quais pacotes instalar e em quais versões, e é comum surgir aquele bug que só acontece na máquina de uma pessoa, por causa de uma versão diferente. Com o requirements.txt versionado junto do código, qualquer um monta o ambiente exato em segundos. É o que quer dizer projeto reprodutível: mesma receita, mesmo resultado, em qualquer lugar.
O que versionar e o que deixar de fora
Fica clara agora a divisão de trabalho entre a pasta e o arquivo. A pasta .venv é pesada, específica do seu sistema operacional e recriável a qualquer instante; ela não entra no controle de versão, e o nome vai para o .gitignore. O requirements.txt, ao contrário, é leve, portátil e essencial; ele entra no repositório junto do código. Em uma frase: versione a receita, não a despensa. Quem clona o projeto recria a despensa a partir da receita, e não precisa carregar a sua.
Um cuidado prático: sempre gere o requirements.txt com o ambiente virtual ativo. Se você rodar o pip freeze fora do ambiente, ele lista os pacotes globais, e a receita fica errada, cheia de coisas que o projeto nem usa. Com o (.venv) ligado, o freeze enxerga só a despensa daquele projeto, e a lista sai enxuta e fiel. Esse é o fluxo profissional completo: criar o ambiente, ativar, instalar o que precisa, congelar a receita e versioná-la junto do código.
Teste rápido
Para que serve o comando pip install -r requirements.txt?
Perguntas frequentes
- Qual a diferença entre pip list e pip freeze?
- Os dois mostram os pacotes instalados, mas em formatos diferentes. O pip list exibe uma tabela legível, boa para conferir. O pip freeze imprime no formato nome==versão, pronto para reinstalar, e por isso é o usado para gerar o requirements.txt.
- Por que fixar a versão exata com == em vez de deixar livre?
- Para o projeto ser reprodutível. Travando a versão, todo mundo instala exatamente o que funcionou, e o comportamento não muda por causa de uma atualização inesperada de biblioteca. Faixas mais flexíveis existem, mas o pip freeze fixa a versão exata de propósito.
- Preciso rodar o pip freeze toda vez?
- Não a cada comando, mas sim sempre que as dependências mudarem. Instalou ou removeu um pacote, regenere o requirements.txt com pip freeze > requirements.txt. Assim o arquivo continua refletindo o que o projeto realmente usa naquele momento.
- O requirements.txt tem que ficar na raiz do projeto?
- É a convenção mais comum: o arquivo fica na raiz, ao lado do código, e vai para o controle de versão. Assim quem clona o projeto encontra a receita na hora e recria o ambiente com um comando, sem procurar onde a lista está.
- Gerei o requirements.txt e ele veio cheio de coisa estranha. Por quê?
- Provavelmente você rodou o pip freeze com o ambiente desativado, então ele listou os pacotes globais do computador. Ative o ambiente virtual e gere de novo: com o (.venv) ligado, o freeze mostra só a despensa daquele projeto, e a lista sai limpa.
- Se eu apagar a pasta .venv, o requirements.txt salva o projeto?
- Sim, e é para isso que ele serve. A pasta .venv é descartável. Com o requirements.txt em mãos, você cria um ambiente novo, ativa e roda pip install -r requirements.txt para reconstruir a despensa idêntica. Por isso a receita se versiona e a pasta, não.
Fontes
Seu progresso fica salvo neste aparelho. Assinantes sincronizam entre os aparelhos.