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

Dorești să devii un maestru în identificarea și corectarea erorilor în Python? Descoperă instrumentele și bibliotecile uimitoare de depanare Python pe care le vom analiza în curând, ce te vor transforma într-un expert!

Python, un limbaj de programare versatil, de nivel înalt și orientat pe obiecte, este utilizat pe scară largă în diverse domenii de dezvoltare. Reprezintă o resursă eficientă pentru proiecte diverse, de la aplicații web la extragerea datelor de pe internet și aplicații mai sofisticate, cum ar fi învățarea automată și știința datelor.

În timpul procesului de dezvoltare, erorile, cunoscute și sub denumirea de bug-uri, sunt inevitabile. Dezvoltatorii iau diverse măsuri pentru a localiza și elimina erorile existente sau potențiale din cod, prevenind astfel blocarea programului. Această procedură este denumită depanare.

Acest articol explorează numeroasele instrumente de depanare Python disponibile, analizând diferențele dintre ele și eficiența implementării fiecăruia.

Biblioteca de Depanare cProfiler

cProfiler, o bibliotecă cunoscută și o extensie C, este concepută pentru a evalua performanța codului pe durate extinse. Aceasta identifică secțiunile de cod care necesită cel mai mult timp pentru a se executa. Deși stabilește cu precizie timpul necesar rulării diferitelor porțiuni de cod, nu localizează și nici nu remediază complet erorile din cod.

Astfel, se impune utilizarea altor instrumente de depanare.

Din fericire, există biblioteci recomandate precum ipdb, Django-debug-toolbar, pyelftools, viztracer și py-spy, care pot fi folosite ca instrumente de depanare pentru codul tău Python.

Instrumentul de Depanare ipdb

Debuggerul Python activat pentru IPython este un depanator interactiv de la terți, care include funcționalitatea pdb. Ipbd oferă suport interactiv pentru shell-ul IPython, incluzând completarea automată, suport pentru culori și funcții magice, printre alte caracteristici de asistență.

Acest depanator oferă acces la depanatorul IPython prin exportul funcțiilor relevante, oferind totodată o interfață similară pentru o introspecție mai bună, ca și în modulul pdb.

Depanare cu Ipdb

Biblioteca trebuie instalată 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 in fruit_list:
        print (fruit)
        ipdb.set_trace()
    for x in alpha_list:
        print(x)
if __name__ == '__main__':
    nested_loop()

Rulează 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() inițializează programul și activează depanatorul prin execuție.

Funcția ipdb.pm() (post-mortem) are o funcționalitate similară cu funcția magică %debug.

Argumentele set_trace

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

Utilizarea Fișierului de Configurare

Setează argumentul de context cu un fișier ipdb sau cu fișierul setup.cfg disponibil în folderul principal, respectiv în folderul de proiect. Te invităm să explorezi mai departe funcționalitățile 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 dai clic pe bara de instrumente, sunt afișate mai multe detalii despre conținutul panoului.

Acest instrument examinează în profunzime mediul de dezvoltare Django.

Urmează procesul de instalare și instrucțiunile de configurare aici.

Biblioteca Pyelftools

Biblioteca pyelftools este construită exclusiv pe Python. Aceasta analizează fișierele ELF și informațiile de depanare DWARF, necesitând doar Python pentru a funcționa.

Utilizarea pyelftools este simplă, deoarece nu depinde de biblioteci externe. În plus, utilizarea pyelftools fără instalare este ușoară, deoarece necesită doar ajustarea variabilei de mediu PYTHONPATH.

Instalarea se face prin:

pip install pyelftools

Implementarea pyelftools presupune doar importarea și invocarea acesteia în programul tău.

Instrumentul de depanare Icecream 🍦

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

Folosind Icecream, respectiv ic(), ai multe avantaje față de print(), după cum se subliniază mai jos:

  • Tastarea este mult mai rapidă.
  • Imprimă structurile de date într-un mod clar și concis.
  • Afișează expresiile sau numele variabilelor, împreună cu valorile lor, utilizând ic().
  • Evidențiază sintaxa ieșirii.
  • Poți include contextul programului, cum ar fi numele fișierului, numărul liniei și funcția părinte.

Pentru a folosi acest pachet, instalează-l cu următoarea comandă pip:

pip install icecream

Un aspect util este că poți utiliza ic() în toate fișierele fără a fi nevoie să-l imporți în fiecare fișier, dacă îl instalezi folosind install(). În plus, install() adaugă ic() la modulul încorporat. Toate fișierele importate de interpret vor partaja ic().

În primul fișier python, denumit, de exemplu, x.py, adaugă ic() folosind install().

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

În fișierul y.py, importat de fișierul x.py, apelează ic():

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

Rezultatul:

y
ic| z : 8

Ce face ic() mai eficient este abilitatea sa de a inspecta variabilele primite, inclusiv el însuși, și apoi de a afișa argumentele și valorile argumentelor, ca în următorul exemplu.

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

Ieșire:

ic| mult(100): 400

În plus, poți insera ic() în codul existent, deoarece acesta returnează argumentele sale. Exemplul de mai jos va returna 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 folosi py-spy pentru a realiza profilarea programelor Python ca instrument de depanare. Fără a reporni programul sau a modifica codul, py-spy vizualizează execuția programului Python. Fiind scris în Rust, are un impact redus asupra performanței.

De asemenea, merită menționat că py-spy poate fi utilizat în siguranță în codul Python de producție, deoarece rulează într-un proces separat față de programul Python analizat.

La fel ca orice alt instrument prezentat anterior, poți folosi py-spy după instalare.

pip install py-spy

Chiar dacă programul tău Python este în producție, py-spy poate fi utilizat pentru a-l analiza și depana, făcându-l un instrument esențial de profilare Python.

Depanatorul Viztracer

Alternativ, poți folosi viztracer, un instrument de depanare, pentru a urmări și vizualiza execuția programului tău Python. Este, de asemenea, un instrument de profilare cu o amprentă redusă.

Ce face viztracer un instrument de depanare eficient?

  • Este ușor de folosit și nu depinde de pachete externe.
  • Viztracer funcționează pe toate platformele de sisteme de operare: Windows, Linux sau macOS.
  • Interfața sa puternică poate reda fără probleme urme 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, operațiuni de colectare a gunoiului etc., fără a modifica nicio secțiune din codul sursă.
  • Ce transformă viztracer într-un instrument de depanare cu costuri reduse este capacitatea sa de a filtra datele de care nu ai nevoie. Apoi păstrează informațiile vechi înainte de a descărca jurnalul în format JSON.
  • Poți insera evenimente personalizate, cum ar fi evenimente instantanee, evenimente variabile și evenimente de durată, în timp ce programul rulează. Astfel, acționează ca o depanare prin afișare, cu diferența că viztracer te informează când apare afișarea în timp ce urmărești datele.

Concluzie

Profilarea Python și depanarea, la fel ca profilarea software, reprezintă un pas esențial într-un proces de dezvoltare atent. Acest pas ajută la eliminarea secțiunilor de cod cu erori, asigurând performanța optimă a codului.

Instrumentele de depanare prezentate mai sus sunt eficiente, facilitând munca unui dezvoltator Python.

Având în vedere că alte instrumente de depanare funcționează mai bine decât cProfiler, poți depana codul tău Python și remedia posibilele erori folosind aceste instrumente, prevenind astfel blocarea programului.

Depanare plăcută!