install_requires vs arquivos requirements

install_requires

install_requires é uma palavra-chave de setup.py do setuptools que deve ser usada para especificar o que um projeto minimamente precisa para executar corretamente. Quando o projeto é instalado por pip, esta é a especificação que é usada para instalar suas dependências.

Por exemplo, se o projeto requer A e B, seu install_requires seria assim:

install_requires=[
   'A',
   'B'
]

Além disso, é uma prática recomendada indicar qualquer limite inferior ou superior conhecido.

Por exemplo, pode-se saber que seu projeto requer pelo menos v1 de “A” e v2 de “B”, então seria assim:

install_requires=[
   'A>=1',
   'B>=2'
]

Também pode ser sabido que o projeto A segue versionamento semântico, e que a v2 de “A” irá indicar uma quebra na compatibilidade, então faz sentido não permitir a v2:

install_requires=[
   'A>=1,<2',
   'B>=2'
]

Não é considerada a melhor prática usar install_requires para fixar dependências em versões específicas, ou para especificar subdependências (ou seja, dependências de suas dependências). Isso é excessivamente restritivo e evita que o usuário obtenha o benefício de atualizações de dependência.

Por último, é importante entender que install_requires é uma lista de requisitos “abstratos”, ou seja, apenas nomes e restrições de versão que não determinam de onde as dependências serão preenchidas (ou seja, de qual índice ou fonte). O local (ou seja, como eles devem ser feitos de “concreto”) deve ser determinado no momento da instalação usando as opções pip. 1

Arquivos de requisitos

Arquivos de requisitos descritos de forma mais simples, são apenas uma lista de argumentos pip install colocados em um arquivo.

Considerando que install_requires define as dependências para um único projeto, arquivos de requisitos são frequentemente usados para definir os requisitos para um ambiente Python completo.

Considerando que os requisitos de install_requires são mínimos, os arquivos de requisitos frequentemente contêm uma lista exaustiva de versões fixadas com o propósito de alcançar instalações repetíveis de um ambiente completo.

Considerando que os requisitos de install_requires são “abstratos”, ou seja, não estão associados a nenhum índice em particular, os arquivos de requisitos geralmente contêm opções de pip como --index-url ou --find-links para fazer requisitos “concreto “, isto é, associado a um determinado índice ou diretório de pacotes. 1

Enquanto os metadados install_requires são automaticamente analisados pelo pip durante uma instalação, os arquivos de requisitos não são, e são usados apenas quando um usuário os instala especificamente usando python -m pip install -r.


1(1,2)

Para obter mais informações sobre os requisitos “abstratos” vs “concretos”, consulte https://caremad.io/posts/2013/07/setup-vs-requirement/.