Requirements em Python
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.
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.
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 freeze
para 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
.