Is er een gemakkelijke manier om niet-meer-gebruikende pakketten te verwijderen uit het requirements-bestand?
Ik heb een bash-script voor deze taak geschreven, maar het werkt niet zoals ik had verwacht. Omdat sommige pakketten niet worden gebruikt volgens hun PyPI-projectnamen. Bijvoorbeeld;
dj-database-url
pakket wordt gebruikt als
dj_database_url
Mijn project heeft veel pakketten in zijn eigen vereistenbestand, dus het één voor één zoeken is te rommelig, foutgevoelig en kost te veel tijd. Terwijl ik zocht, hebben IDE’s deze eigenschap nog niet.
Antwoord 1, autoriteit 100%
Je kunt code-inspectie gebruiken in PyCharm.
- Verwijder de inhoud van uw
requirements.txt
maar bewaar het lege bestand. - Laad uw project in,
- PyCharm ga naar
Code -> Inspect code...
. - Kies de optie
Whole project
in het dialoogvenster en klik opOK
.
Zoek in het paneel met inspectieresultaten de sectiePackage requirements
onderPython
(merk op dat deze sectie alleen wordt weergegeven als errequirements.txt
ofsetup.py
bestand).
De sectie zal een van de volgende berichten bevatten:
Package requirement '<package>' is not satisfied
als er een pakket is dat wordt vermeld inrequirements.txt
maar niet wordt gebruikt in een .py-bestand.Package '<package>' is not listed in project requirements
als er een pakket is dat wordt gebruikt in .py-bestanden, maar niet wordt vermeld inrequirements.txt
.
U bent geïnteresseerd in de tweede keuring.
U kunt alle gebruikte pakketten toevoegen aan requirements.txt
door met de rechtermuisknop op het gedeelte Package requirements
te klikken en Apply Fix 'Add requirements '<package>' to requirements.txt'
. Merk op dat het slechts één pakketnaam zal tonen, maar het zal feitelijk alle gebruikte pakketten toevoegen aan requirements.txt
als dit wordt aangeroepen voor sectie.
Als je wilt, kun je ze één voor één toevoegen, klik met de rechtermuisknop op de inspectie die bij een bepaald pakket hoort en kies Apply Fix 'Add requirements '<package>' to requirements.txt'
, herhaal dit voor elke inspectie van dit soort.
Daarna kunt u een schone virtuele omgeving creëren en pakketten installeren vanuit de nieuwe requirements.txt
.
Houd er rekening mee dat PyCharm een functie voor importoptimalisatie heeft, zie Invoer optimaliseren…. Het kan handig zijn om deze functie te gebruiken vóór alle andere hierboven genoemde stappen.
Antwoord 2, autoriteit 16%
De beste gok is om een (verse) python venv/virtual-env te gebruiken met geenpakketten, of alleen die waarvan je zeker weet dat je ze nodig hebt, test je pakket – het installeren van ontbrekende pakketten met pip
als je problemen tegenkomt, wat voor de meeste software vrij snel zou moeten zijn, gebruik dan het pip freeze
commando om de pakketten op te sommen die je echt nodig hebt. Je kunt beter pip wheel
gebruiken om een wiel te maken met de pakketten erin.
De andere benadering zou zijn om:
- Gebruik pylintom elk bestand te controleren op ongebruikte importen en ze te verwijderen (u zou dit toch moeten doen ),
- Voer je tests uit om er zeker van te zijn dat het juist was,
- Gebruik een tool zoals snakefoodof snakefood3om uw nieuwe lijst met afhankelijkheden te genereren
Houd er rekening mee dat voor een goede werking van afhankelijkheidscontroles het raadzaam is om voorwaardelijke import en import binnen functies te vermijden.
Houd er ook rekening mee dat om zekerte zijn dat je alles hebt, het een goed idee is om een nieuwe venv/virtual-env te bouwen en te installeren vanuit je lijst met afhankelijkheden en vervolgens je code opnieuw te testen.
>
Antwoord 3
Ik heb met succes pip-check- vereist.
Met het commando pip-extra-reqs your_directory
controleert het op alle ongebruikte afhankelijkheden in your_directory
Installeer het met pip install pip-check-reqs
.