09/25/2022

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

Vrei să fii un adevărat expert în depanarea Python? Depanați 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, folosit în multe scopuri de dezvoltare. În plus, este un instrument de dezvoltare eficient pentru diferite aplicații, de la dezvoltarea de aplicații web la scraping web ș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 iau mai mulți pași pentru a detecta și elimina erorile existente și potențiale din cod. Drept urmare, î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 întregime și nici nu remediază erorile din cod.

Prin urmare, apare necesitatea folosirii altor depanatoare.

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

Instrumentul de depanare ipdb

Debuggerul Python activat pentru IPython este un depanator interactiv terță parte care conține pdbfuncționalitatea lui. Ipbd de asemenea, vine cu suport interactiv pentru IPython shell. 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 mai bună introspecție, la fel ca în modulul pdb.

  Construiește-ți următoarea aplicație cu aceste platforme open source low-code/fără cod

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ă în mod 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 îl acceptă și ca argument, acceptă valori booleene și pornește interfața ipdb 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

The 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

The instrumente de piele biblioteca 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.

Folosind inghetatade 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.
  • Tipăriț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.
  Cum să faci ca un computer să umple ecranul televizorului atunci când te conectezi prin HDMI

Î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 y.py fil, 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 transmise acestuia, 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, apoi 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

Poți să folosești pi-spion 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. În plus, 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 anterior 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ă.

  Cum să găsiți o filă cu utilizare ridicată a procesorului pe Chrome și Firefox

Ceea ce face ca viztracer 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.
  • Folosește RegEx pentru a înregistra funcții arbitrare și informații suplimentare, cum ar fi variabile și atribute, Excepții ridicate, Operațiuni de colectare a gunoiuluietc., 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 dumneavoastră. Apoi păstrează informațiile vechi înainte de a descărca jurnalul în format JSON.
  • Îl puteți folosi pentru a insera evenimente personalizate precum eveniment instantaneucel eveniment variabilsi Durata evenimentului 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 Python și depanarea 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 eventualele erori folosind aceste depanare pentru a preveni rularea codului fără a se bloca.

Depanare fericită!

x