Requirements em Python

Juliana Guamá
pyladiesbh
Published in
2 min readSep 2, 2019
Foto de Christina Morillo no Pexels

Toda documentação de projeto deve informar o que deve ser utilizado de forma que qualquer máquina consiga rodá-lo. Dai cria-se um "readme.md" e um "requirements.txt" para que as dependências necessárias sejam instaladas.

O arquivo "requirements.txt" contém as informações e versões dos pacotes necessários para rodar algum script ou projeto.

Exemplo de requirements.txt

Para instalar as dependências de um "requirements.txt", usamos o comando:

$ pip install -r requirements.txt

Esse comando força o pip a resolver os problemas de dependências para que o seu script ou projeto rode em outra máquina ou em outro ambiente, conforme descrito no guia do usuário do pip no site do pypi [link aqui].

Também é possível no arquivo especificar um grupo de versões validadas para funcionamento do seu script ou projeto. Para isso, é preciso alterar manualmente o requirements , como no exemplo com pandas a seguir.

Segundo exemplo de requirements.txt

Para criar então o arquivo, existem duas opções, uma sendo a mais conhecida que é usando pip freeze e a outra, menos conhecida, usando o pacote pipreqs. Para gerar usando freeze, basta abrir o terminal e rodar:

$ pip freeze > requirements.txt

O comando pip freeze gera a lista de pacotes que seu ambiente possui instalado. Dessa forma, se você não for uma pessoa acostumada a trabalhar com ambientes virtuais e costuma gerar diversos scripts com propósitos diferentes, o seu requirements terá a composição de pacotes que poderia trabalhar com todos esses scripts.

O pacote pipreqs veio tentando suprir a necessidade de gerar requirements de todo o ambiente, puxando apenas as dependências usadas por projeto. Assim, a única necessidade é preparar uma pasta, colocar todos os scripts do projeto na pasta e fazer o comando no terminal:

$ pipreqs ~/caminho_ate_pasta_projeto

O pipreqs lê todos os scripts de python dentro da pasta indicada e identifica todos os pacotes invocados. Assim, é preciso prestar atenção aos pacotes que não são invocados mas são necessários para o projeto, como o lxml para quem usa BeutifulSoup.

Também é claro que, para usar essa ferramenta, é preciso tê-lo instalado no seu ambiente.

$ pip install pipreqs

Vantagens vs Desvantagens

Enquanto ofreeze explora todo o ambiente e consegue expor até packages não invocadas no projeto, mas necessárias para rodá-lo, pipreqs expõe apenas os invocados no script.

Dessa forma, se você tem o costume de criar ambientes virtuais para cada projeto, o melhor é usar o freezepara evitar que você precise acrescentar manualmente os pacotes não invocados.

Se você desconhece o que são ambientes virtuais de python ou conhece mas não costuma criar um para cada projeto, então o pipreqs é a solução que você necessita, já que ele expõe apenas o necessário e é menos trabalhoso acrescentar alguma dependência não invocada, do que remover o bocado extra colocado pelo freeze.

--

--

Juliana Guamá
pyladiesbh

Cientista de Dados que usa Python e R até para calcular a quantidade de pó que vai no café.