Es passiert: Sie beginnen mit der Verwendung eines Moduls in Ihrem Projekt und es funktioniert, und Sie merken nicht, dass es nur in Ihrer virtuellen Umgebung enthalten ist, weil es eine Abhängigkeit von einem Paket ist, das Sie verwenden. pip-missing-reqs findet diese Module, sodass Sie sie in die Datei „requirements.txt“ für das Projekt aufnehmen können.
Alternativ haben Sie ein Projekt mit langer Laufzeit, das einige Pakete in „requirements.txt“ enthält, die in der Codebasis nicht mehr aktiv verwendet werden. Das Tool pip-extra-reqs findet diese Module, sodass Sie sie entfernen können.
Angenommen, Ihr Projekt folgt einem Layout wie dem vorgeschlagenen Beispielprojekt:
setup.py setup.cfg Anforderungen.txt sample/__init__.py sample/sample.py sample/tests/test_sample.py
Grundlegende Verwendung, Ausführung in Ihrem Projektverzeichnis:
<virtuelle Umgebung für Ihr Projekt aktivieren> pip-missing-reqs --ignore-file=sample/tests/* Beispiel
Dadurch werden alle Importe im Code in „sample“ gefunden und überprüft, ob die Pakete, zu denen diese Module gehören, in der Datei „requirements.txt“ enthalten sind.
Zusätzlich kann überprüft werden, dass in der Datei „requirements.txt“ keine Abhängigkeiten vorhanden sind, die dann im Projekt nicht verwendet werden:
<virtuelle Umgebung für Ihr Projekt aktivieren> pip-extra-reqs --ignore-file=sample/tests/* Beispiel
Dadurch würde alles gefunden, was in der Datei „requirements.txt“ aufgeführt ist, aber nicht per Beispiel importiert wurde.
Um Ihnen das Leben zu erleichtern, kopieren Sie so etwas in Ihre tox.ini:
[testenv:pip-check-reqs] deps=-rrequirements.txt commands= pip-missing-reqs --ignore-file=sample/tests/* Beispiel pip-extra-reqs --ignore-file=sample/tests/* Beispiel
Ihre Testdateien befinden sich manchmal im selben Verzeichnis wie Ihre Anwendungsquelle („Beispiel“ in den obigen Beispielen). Die Anforderungen für diese Tests sollten im Allgemeinen nicht in der Datei „requirements.txt“ enthalten sein, und Sie möchten nicht, dass dieses Tool für diese falsche Treffer generiert.
Sie können diese Testdateien mit der Option --ignore-file (Kurzschrift ist -f) von Ihrer Prüfung ausschließen. Mehrere Instanzen der Option sind zulässig.
Wenn Ihr Projekt Module enthält, die bedingt importiert werden, oder Anforderungen, die bedingt einbezogen werden, können Sie bestimmte Module anhand ihres Namens (oder Glob-Musters) von der Prüfung ausschließen, indem Sie --ignore-module (Abkürzung ist -m) verwenden:
# ignoriere den Modul-Spam pip-missing-reqs --ignore-module=Spam-Beispiel # Ignorieren Sie auch den Spam des gesamten Pakets pip-missing-reqs --ignore-module=spam --ignore-module=spam.* Beispiel
Wenn Ihr Projekt pyproject.toml
verwendet, gibt es mehrere Möglichkeiten, pip-check-reqs
damit zu verwenden.
Eine Möglichkeit besteht darin, ein externes Tool zu verwenden, um pyproject.toml
in requirements.txt
zu konvertieren:
# erfordert „pip install pdm“. pdm export --pyproject > Anforderungen.txt # oder, wenn Sie UV bevorzugen, „pip install uv“. uv pip kompilieren --no-deps pyproject.toml > Anforderungen.txt
Dann können Sie wie gewohnt pip-missing-reqs
und pip-extra-reqs
verwenden.
Eine andere Möglichkeit besteht darin, eine requirements.txt
-Datei in Ihrer pyproject.toml
Datei zu verwenden, zum Beispiel mit dem Setuptools-Build-Backend:
[ build-system ]
build-backend = " setuptools.build_meta "
requires = [
" setuptools " ,
]
[ project ]
...
dynamic = [ " dependencies " ]
[ tool . setuptools . dynamic ]
dependencies = { file = " requirements.txt " }
Josh Hesketh – der den Code überarbeitet und das Tool „pip-extra-reqs“ beigesteuert hat.
Wil Cooley – der sich um die Entfernung von normalize_name gekümmert und einige Fehler behoben hat.