Existe-t-il un moyen simple de supprimer les packages qui n'utilisent plus le fichier requirements?
J'ai écrit un script bash pour cette tâche, mais cela ne fonctionne pas comme prévu. Car, certains packages ne sont pas utilisés après leurs noms de projet PyPI. Par exemple;
dj-database-url
le package est utilisé comme
dj_database_url
Mon projet a de nombreux packages dans son propre fichier d'exigences, donc les rechercher un par un est trop compliqué, sujet aux erreurs et prend trop de temps. Pendant ma recherche, les IDE n'ont pas encore cette propriété.
Vous pouvez utiliser l'inspection de code dans PyCharm .
Supprimez le contenu de votre requirements.txt
mais conservez le fichier vide. Chargez votre projet dans, PyCharm allez à Code -> Inspect code...
. Choisissez Whole project
option dans la boîte de dialogue et cliquez sur OK
. Dans le panneau des résultats d'inspection, recherchez Package requirements
section sous Python
(notez que cette section ne sera affichée que s'il y a requirements.txt
ou setup.py
fichier). La section contiendra l'un des messages suivants:
Package requirement '<package>' is not satisfied
si un package est répertorié dans requirements.txt
mais n'est utilisé dans aucun fichier .py.Package '<package>' is not listed in project requirements
s'il existe un package utilisé dans les fichiers .py, mais non répertorié dans requirements.txt
.Vous êtes intéressé par la deuxième inspection. Vous pouvez ajouter tous les packages utilisés à requirements.txt
en cliquant avec le bouton droit sur Package requirements
section et en sélectionnant Apply Fix 'Add requirements '<package>' to requirements.txt'
. Notez qu'il n'affichera qu'un seul nom de package, mais il ajoutera en fait tous les packages utilisés à requirements.txt
si appelé pour la section.
Si vous le souhaitez, vous pouvez les ajouter un par un, faites un clic droit sur l'inspection correspondant à certains colis et choisissez Apply Fix 'Add requirements '<package>' to requirements.txt'
, répéter pour chaque inspection de ce type.
Après cela, vous pouvez créer un environnement virtuel propre et installer des packages à partir de nouveaux requirements.txt
.
Notez également que PyCharm a une fonction d'optimisation des importations, voir Optimiser les importations ... . Il peut être utile d'utiliser cette fonctionnalité avant toute autre étape répertoriée ci-dessus.
Le meilleur pari est d'utiliser un ( frais ) python virtual-env avec pas de paquets, ou seulement ceux dont vous savez certainement avoir besoin, testez votre paquet - en installant les paquets manquants avec pip
lorsque vous rencontrez des problèmes qui devraient être assez rapides pour la plupart des logiciels, puis utilisez les pip freeze
commande pour lister les packages dont vous avez vraiment besoin. Mieux vous pouvez utiliser pip wheel
pour créer une roue avec les packages dans.
L'autre approche consisterait à:
Notez que pour que la vérification des dépendances fonctionne correctement, il est conseillé d'éviter l'importation conditionnelle et l'importation dans les fonctions.
Notez également que pour être sûr que vous avez tout, c'est une bonne idée de construire un nouvel environnement virtuel et d'installer à partir de votre liste de dépendances puis de tester à nouveau votre code.
J'ai utilisé avec succès pip-check-reqs .
Avec la commande pip-extra-reqs your_directory
il vérifiera toutes les dépendances inutilisées dans your_directory
Installez-le avec pip install pip-check-reqs
.