Acontece: você começa a usar um módulo no seu projeto e ele funciona e você não percebe que ele só está sendo incluído no seu virtualenv porque é uma dependência de um pacote que você está usando. pip-missing-reqs encontra esses módulos para que você possa incluí-los no requirements.txt do projeto.
Como alternativa, você tem um projeto de longa duração que possui alguns pacotes em requirements.txt que não são mais usados ativamente na base de código. A ferramenta pip-extra-reqs encontrará esses módulos para que você possa removê-los.
Supondo que seu projeto siga um layout como o projeto de amostra sugerido:
setup.py configuração.cfg requisitos.txt amostra/__init__.py amostra/amostra.py amostra/testes/test_sample.py
Uso básico, rodando no diretório do seu projeto:
<ativar virtualenv para seu projeto> pip-missing-reqs --ignore-file=amostra/testes/* amostra
Isto encontrará todas as importações no código em "sample" e verificará se os pacotes aos quais esses módulos pertencem estão no arquivo requirements.txt.
Além disso, é possível verificar se não há dependências em requisitos.txt que não sejam utilizadas no projeto:
<ativar virtualenv para seu projeto> pip-extra-reqs --ignore-file=amostra/testes/* amostra
Isso encontraria qualquer coisa listada em requisitos.txt, mas que não fosse importada pela amostra.
Para facilitar sua vida, copie algo assim em seu tox.ini:
[testev:pip-check-reqs] deps=-rrequirements.txt comandos= pip-missing-reqs --ignore-file=amostra/testes/* amostra pip-extra-reqs --ignore-file=amostra/testes/* amostra
Às vezes, seus arquivos de teste estarão presentes no mesmo diretório da fonte do seu aplicativo ("amostra" nos exemplos acima). Os requisitos para esses testes geralmente não devem estar no arquivo requirements.txt e você não deseja que esta ferramenta gere resultados falsos para eles.
Você pode excluir esses arquivos de teste de sua verificação usando a opção --ignore-file (a abreviação é -f). Várias instâncias da opção são permitidas.
Se o seu projeto tiver módulos que são importados condicionalmente ou requisitos que são incluídos condicionalmente, você pode excluir certos módulos da verificação por nome (ou padrão glob) usando --ignore-module (a abreviação é -m):
#ignore o spam do módulo pip-missing-reqs --ignore-module=amostra de spam # ignore todo o spam do pacote também pip-missing-reqs --ignore-module=spam --ignore-module=spam.* amostra
Se o seu projeto usa pyproject.toml
, há várias maneiras de usar pip-check-reqs
com ele.
Uma maneira é usar uma ferramenta externa para converter pyproject.toml
em requirements.txt
:
# requer `pip install pdm` exportação pdm --pyproject > requisitos.txt # ou, se preferir uv, `pip install uv` compilação uv pip --no-deps pyproject.toml> requisitos.txt
Então você pode usar pip-missing-reqs
e pip-extra-reqs
como de costume.
Outra maneira é usar um arquivo requirements.txt
dentro do arquivo pyproject.toml
, por exemplo, com o back-end de compilação setuptools:
[ build-system ]
build-backend = " setuptools.build_meta "
requires = [
" setuptools " ,
]
[ project ]
...
dynamic = [ " dependencies " ]
[ tool . setuptools . dynamic ]
dependencies = { file = " requirements.txt " }
Josh Hesketh – que refatorou o código e contribuiu com a ferramenta pip-extra-reqs.
Wil Cooley – que cuidou da remoção de normalize_name e corrigiu alguns bugs.