Depanați Python ca un erou cu aceste biblioteci și instrumente

Publicat: 2022-06-26

Vrei să fii un adevărat expert în depanarea Python? Depanați-vă codul Python folosind aceste uimitoare instrumente și biblioteci de depanare Python pe care le vom acoperi în curând!

Python este un limbaj de programare de uz general, de nivel înalt și orientat pe obiecte, utilizat în multe scopuri de dezvoltare. Mai mult, este un instrument eficient de dezvoltare pentru diferite aplicații, de la dezvoltarea de aplicații web la web scraping și aplicații mai complexe, cum ar fi Machine Learning și Data Science.

În timpul dezvoltării, erorile numite bug-uri în programare sunt predispuse să apară. Dezvoltatorii fac mai mulți pași pentru a detecta și elimina erorile existente și potențiale din cod. Ca rezultat, împiedicați zdrobirea codului programului. Numim acest proces depanare.

Acest articol va analiza mai multe programe de depanare Python disponibile pe care le puteți utiliza. Vom vedea, de asemenea, cât de diferiți sunt aceste depanatoare unul de celălalt și ce face implementarea lor eficientă.

Biblioteca de depanare cProfiler

cProfiler, este o bibliotecă populară și o extensie C care execută profilarea codului de lungă durată. Pe termen lung, identifică secțiuni ale codului programului care durează mult timp pentru a rula. Deși identifică timpul precis necesar rulării diferitelor secțiuni ale codului, nu identifică în totalitate și nici nu remediază erorile din cod.

Prin urmare, apare necesitatea de a utiliza alte depanatoare.

Din fericire, puteți folosi biblioteci recomandate precum ipdb, Django-debug-toolbar, pyelftools, viztracer și py-spy ca instrumente de depanare pentru codul dvs. Python.

Instrumentul de depanare ipdb

Depanatorul Python activat pentru IPython este un depanator terță parte interactiv care conține funcționalitatea pdb. Ipbd vine, de asemenea, cu suport interactiv pentru IPython. Un astfel de suport include completarea filelor, suport pentru culori și funcții magice, printre alte caracteristici de asistență.

Acest depanator permite accesul la depanatorul IPython prin exportarea funcțiilor relevante. De asemenea, oferă o interfață similară pentru o introspecție mai bună, la fel ca în modulul pdb.

Depanare cu Ipdb

Biblioteca necesită instalare folosind comanda pip de mai jos.

 pip install ipdb

Un exemplu de utilizare a ipdb ar arăta astfel:

 import ipdb alpha_list = ['a', 'b', 'c'] fruit_list = ['orange', 'mango', 'kiwi'] def nested_loop(): for fruit_list: print (fruit) ipdb.set_trace() for x in alpha_list: print(x) if __name__ == '__main__': nested_loop()

Rulați fișierul python folosind comanda de mai jos, unde test.py este numele fișierului meu:

 python -m ipdb test.py

Importul ipdb și rularea funcției ipdb.set_trace() permite începerea programului și rulează depanatorul prin execuție.

Funcția ipdb.pm() (post-mortem) acționează similar cu funcția %debug magic.

set_trace argumente

Transmite contextul ca argument la set_trace pentru a afișa mai multe linii de cod definite. În plus, cond , care set_trace acceptă și ca argument, acceptă valori booleene și pornește interfața ipdb atunci când setați cond la true .

Folosind fișierul de configurare

Setați argumentul de context cu un fișier idpdb sau fișierul setup.cfg disponibil în folderul principal și, respectiv, în folderul de proiect. Sunteți binevenit să verificați în continuare funcționalitatea ipdb.

Bara de instrumente Django Debug

Bara de instrumente de depanare Django este un instrument de depanare popular în Django: un cadru Python.

Acest set configurabil de panouri afișează o solicitare curentă sau informații de depanare a răspunsului. Când faceți clic pe bara de instrumente, sunt afișate mai multe detalii despre conținutul panoului.

Acest instrument inspectează în detaliu mediul de dezvoltare Django.

Urmați procesul de instalare și instrucțiunile de configurare aici.

Biblioteca Pyelftools

Biblioteca pyelftools este construită exclusiv pe Python. Analizează și analizează fișierele ELF și informațiile de depanare DWARF și are nevoie doar de Python pentru a rula.

Utilizarea Pyelftools este ușoară, deoarece nu are biblioteci externe. În plus, utilizarea pyelftools fără instalare este destul de ușoară, deoarece necesită pur și simplu ajustarea PYTHONPATH în variabilele de mediu.

Il vei instala folosind:

 pip install pyelftools

Implementarea pyelftools necesită pur și simplu importarea acestuia și invocarea lui în programul dumneavoastră.

Instrumentul de depanare a înghețatei

Acesta este un alt instrument eficient de depanare pentru dezvoltatorii Python.

Utilizarea înghețatei, de asemenea, ic() , vine cu multe beneficii față de print(), după cum se subliniază mai jos:

  • Tastatul este relativ mai rapid, la propriu.
  • Imprimă destul de bine structurile de date.
  • Imprimați expresii sau nume de variabile și valorile acestora cu ic() .
  • Evidențiază sintaxa ieșirii.
  • Opțional, include contextul programului, inclusiv numele fișierului, numărul liniei și funcția părinte.

Înainte de a utiliza acest pachet, instalați-l folosind comanda pip de mai jos:

 pip install icecream

Lucrul bun este că puteți folosi ic() în toate fișierele fără a-l importa neapărat în toate fișierele, instalându-l folosind install() . Mai mult, install() adaugă ic() la modulul încorporat. Toate fișierele pe care interpretul le importă vor partaja ic() .

În primul fișier python rădăcină, pe care îl puteți numi x.py, adăugați ic() folosind install() .

 from icecream import install install() from y import mult mult()

În fișierul y.py, fișierul x.py se importă, apelați ic()

 def mult(): z=8 ic(z)

Rezultate:

 y ic| z : 8

Ceea ce face ca ic() să fie mai eficient este capacitatea sa de a inspecta variabilele care i-au fost transmise, inclusiv el însuși, apoi de a-și imprima argumentele și valorile argumentelor ca în exemplul următor.

 from icecream import ic def mult(x): return x * 4 ic(mult(100))

Ieșire:

 ic| mult(100): 400

Mai mult, puteți insera ic() în codul preexistent, deoarece returnează argumentele sale. Exemplul de mai jos returnează ic| x: 12 ic| x: 12 , apoi ic| y: 48 ic| y: 48 .

 from icecream import ic x = 12 def mult(x): return x*4 y = mult(ic(x)) ic(y)

Depanare folosind instrumentul py-spy

Puteți utiliza py-spy pentru a profila mostre pentru programele Python ca instrument de depanare. Fără a reporni programul sau a modifica codul acestuia, py-spy vizualizează execuția programului Python. Mai mult, pentru că este scris în Rust, are o suprafață redusă.

În plus, merită luat în considerare faptul că utilizarea py-spy împotriva codului Python de producție este sigură, deoarece rulează un proces diferit de programul Python profilat.

Ca orice alt instrument precedent pe care l-am văzut, puteți utiliza instrumentul py-spy după ce îl instalați.

 pip install py-spy

În ciuda faptului că programul dvs. Python deservește trafic de producție, puteți încă profila și depana acest program folosind py-spy, făcându-l un instrument critic de profile Python.

Depanator Viztracer

Alternativ, puteți utiliza viztracer, un instrument de depanare, pentru a urmări și vizualiza execuția programului dvs. Python. Este, de asemenea, un instrument de profilare cu înregistrare redusă.

Ce face ca viztracer să fie un instrument eficient de depanare?

  • Utilizarea acestuia este destul de ușoară și nu depinde de pachetele externe pentru a funcționa.
  • Viztracer funcționează pe toate platformele de sisteme de operare: Windows, Linux sau macOS.
  • Front-end-ul său puternic redă fără probleme urmele la nivel de GB.
  • Utilizează RegEx pentru a înregistra funcții arbitrare și informații suplimentare, cum ar fi variabile și atribute, excepții ridicate, operațiuni Garbage Collector etc., fără a modifica nicio secțiune de cod din codul sursă.
  • Ceea ce face din viztracer un instrument de depanare cu cheltuieli reduse este capacitatea sa de a filtra datele de care nu aveți nevoie în programul dvs. Apoi reține informațiile vechi înainte de a descărca jurnalul în format JSON.
  • Îl puteți folosi pentru a insera evenimente personalizate, cum ar fi evenimentul instantaneu, evenimentul variabil și evenimentul Durată pe măsură ce programul rulează. În acest fel, funcționează ca o depanare a tipăririi, cu excepția faptului că viztracer vă informează când apare imprimarea pe măsură ce urmăriți datele.

Concluzie

Profilarea și depanarea Python, la fel ca și profilarea software, este un pas cheie într-o dezvoltare care atrage atenția. Acest pas ajută la excluderea oricăror secțiuni de cod cu erori, astfel încât performanța generală a codului să fie optimizată.

Instrumentele de depanare pe care le-am acoperit mai sus sunt instrumente eficiente care fac munca unui dezvoltator Python destul de ușoară.

Văzând că celelalte instrumente de depanare funcționează mai eficient decât cProfiler, puteți, ca un adevărat erou, să vă depanați codul Python și să remediați orice erori potențiale folosind aceste depanare pentru a preveni rularea codului fără a se bloca.

Depanare fericită!