Cela arrive : vous commencez à utiliser un module dans votre projet et cela fonctionne et vous ne réalisez pas qu'il est uniquement inclus dans votre virtualenv car c'est une dépendance d'un package que vous utilisez. pip-missing-reqs trouve ces modules afin que vous puissiez les inclure dans le fichier Requirements.txt du projet.
Alternativement, vous disposez d'un projet de longue durée contenant certains packages dans le fichier requirejs.txt qui ne sont plus activement utilisés dans la base de code. L'outil pip-extra-reqs trouvera ces modules afin que vous puissiez les supprimer.
En supposant que votre projet suit une mise en page similaire à l'exemple de projet suggéré :
configuration.py configuration.cfg exigences.txt exemple/__init__.py exemple/exemple.py exemple/tests/test_sample.py
Utilisation de base, exécutée dans le répertoire de votre projet :
<activer virtualenv pour votre projet> pip-missing-reqs --ignore-file=sample/tests/* échantillon
Cela trouvera toutes les importations dans le code dans "exemple" et vérifiera que les packages auxquels appartiennent ces modules se trouvent dans le fichier exigences.txt.
De plus, il est possible de vérifier qu'il n'y a aucune dépendance dans le fichier Requirements.txt qui soit ensuite inutilisée dans le projet :
<activer virtualenv pour votre projet> pip-extra-reqs --ignore-file=sample/tests/* échantillon
Cela trouverait tout ce qui est répertorié dans Requirements.txt mais qui n'est pas importé par exemple.
Pour vous simplifier la vie, copiez quelque chose comme ceci dans votre tox.ini :
[testenv: pip-check-reqs] deps=-rrequirements.txt commandes= pip-missing-reqs --ignore-file=sample/tests/* échantillon pip-extra-reqs --ignore-file=sample/tests/* échantillon
Vos fichiers de test seront parfois présents dans le même répertoire que le source de votre application (« exemple » dans les exemples ci-dessus). Les exigences pour ces tests ne doivent généralement pas figurer dans le fichier exigences.txt, et vous ne voulez pas que cet outil génère de faux résultats pour ceux-ci.
Vous pouvez exclure ces fichiers de test de votre vérification en utilisant l'option --ignore-file (le raccourci est -f). Plusieurs instances de l’option sont autorisées.
Si votre projet comporte des modules importés sous condition ou des exigences incluses sous condition, vous pouvez exclure certains modules de la vérification par nom (ou modèle global) en utilisant --ignore-module (le raccourci est -m) :
# ignorer le spam du module pip-missing-reqs --ignore-module=échantillon de spam # ignorez également tout le spam du paquet pip-missing-reqs --ignore-module=spam --ignore-module=spam.* exemple
Si votre projet utilise pyproject.toml
, il existe plusieurs façons d'utiliser pip-check-reqs
avec.
Une solution consiste à utiliser un outil externe pour convertir pyproject.toml
en requirements.txt
:
# nécessite `pip install pdm` pdm export --pyproject > exigences.txt # ou, si vous préférez uv, `pip install uv` uv pip compile --no-deps pyproject.toml > conditions.txt
Ensuite, vous pouvez utiliser pip-missing-reqs
et pip-extra-reqs
comme d'habitude.
Une autre façon consiste à utiliser un fichier requirements.txt
dans votre fichier pyproject.toml
, par exemple avec le backend de build setuptools :
[ build-system ]
build-backend = " setuptools.build_meta "
requires = [
" setuptools " ,
]
[ project ]
...
dynamic = [ " dependencies " ]
[ tool . setuptools . dynamic ]
dependencies = { file = " requirements.txt " }
Josh Hesketh - qui a refactorisé le code et contribué à l'outil pip-extra-reqs.
Wil Cooley -- qui a géré la suppression de normalize_name et corrigé quelques bugs.