Sucede: comienzas a usar un módulo en tu proyecto y funciona y no te das cuenta de que solo se incluye en tu virtualenv porque es una dependencia de un paquete que estás usando. pip-missing-reqs encuentra esos módulos para que pueda incluirlos en el archivo de requisitos.txt del proyecto.
Alternativamente, tiene un proyecto de larga duración que tiene algunos paquetes en requisitos.txt que ya no se utilizan activamente en el código base. La herramienta pip-extra-reqs encontrará esos módulos para que pueda eliminarlos.
Suponiendo que su proyecto sigue un diseño como el proyecto de muestra sugerido:
configuración.py configuración.cfg requisitos.txt muestra/__init__.py muestra/muestra.py muestra/pruebas/test_sample.py
Uso básico, ejecutándose en el directorio de su proyecto:
<activar virtualenv para tu proyecto> pip-missing-reqs --ignore-file=sample/tests/* muestra
Esto encontrará todas las importaciones en el código en "muestra" y verificará que los paquetes a los que pertenecen esos módulos estén en el archivo requisitos.txt.
Además es posible verificar que no haya dependencias en requisitos.txt que luego no se utilicen en el proyecto:
<activar virtualenv para tu proyecto> pip-extra-reqs --ignore-file=muestra/pruebas/* muestra
Esto encontraría todo lo que aparece en requisitos.txt pero que no se importa mediante muestra.
Para hacerte la vida más fácil, copia algo como esto en tu tox.ini:
[testenv: pip-check-reqs] deps=-rrequisitos.txt comandos = pip-missing-reqs --ignore-file=sample/tests/* muestra pip-extra-reqs --ignore-file=muestra/pruebas/* muestra
Sus archivos de prueba a veces estarán presentes en el mismo directorio que el código fuente de su aplicación ("muestra" en los ejemplos anteriores). Los requisitos para esas pruebas generalmente no deberían estar en el archivo requisitos.txt y no desea que esta herramienta genere resultados falsos para ellos.
Puede excluir esos archivos de prueba de su verificación usando la opción --ignore-file (la abreviatura es -f). Se permiten múltiples instancias de la opción.
Si su proyecto tiene módulos que se importan condicionalmente o requisitos que se incluyen condicionalmente, puede excluir ciertos módulos de la verificación por nombre (o patrón global) usando --ignore-module (la abreviatura es -m):
# ignorar el módulo spam pip-missing-reqs --ignore-module=muestra de spam # ignorar también todo el paquete de spam pip-missing-reqs --ignore-module=spam --ignore-module=spam.* ejemplo
Si su proyecto usa pyproject.toml
, hay varias formas de usar pip-check-reqs
con él.
Una forma es utilizar una herramienta externa para convertir pyproject.toml
a requirements.txt
:
# requiere `pip install pdm` exportación de pdm --pyproject > requisitos.txt # o, si prefieres uv, `pip install uv` compilación uv pip --no-deps pyproject.toml> requisitos.txt
Luego puedes usar pip-missing-reqs
y pip-extra-reqs
como de costumbre.
Otra forma es utilizar un archivo requirements.txt
dentro de su archivo pyproject.toml
, por ejemplo con el backend de compilación de setuptools:
[ build-system ]
build-backend = " setuptools.build_meta "
requires = [
" setuptools " ,
]
[ project ]
...
dynamic = [ " dependencies " ]
[ tool . setuptools . dynamic ]
dependencies = { file = " requirements.txt " }
Josh Hesketh, quien refactorizó el código y contribuyó con la herramienta pip-extra-reqs.
Wil Cooley, quien manejó la eliminación de normalize_name y corrigió algunos errores.