Laďte Python jako hrdina pomocí těchto knihoven a nástrojů

Chcete být skutečným odborníkem na ladění Pythonu? Odlaďte svůj kód Python pomocí těchto úžasných nástrojů a knihoven pro ladění Pythonu, které brzy pokryjeme!

Python je univerzální, vysokoúrovňový a objektově orientovaný programovací jazyk používaný k mnoha vývojovým účelům. Navíc je to účinný vývojový nástroj pro různé aplikace, od vývoje webových aplikací po web scraping a složitější aplikace, jako je Machine learning a Data Science.

Během vývoje jsou náchylné k chybám nazývaným chyby v programování. Vývojáři podniknou několik kroků, aby odhalili a odstranili existující a potenciální chyby v kódu. V důsledku toho zabráníte rozdrcení programového kódu. Tomuto procesu říkáme ladění.

Tento článek se podívá na několik dostupných ladicích programů Pythonu, které můžete použít. Uvidíme také, jak se tyto debuggery od sebe liší a v čem je jejich implementace efektivní.

Knihovna pro ladění cProfiler

cProfiler, je oblíbená knihovna a rozšíření C, které provádí profilování dlouhotrvajícího kódu. Z dlouhodobého hlediska identifikuje části programového kódu, jejichž spuštění trvá dlouho. I když identifikuje přesný čas potřebný ke spuštění různých částí kódu, zcela neidentifikuje ani neopravuje chyby v kódu.

Proto vyvstává potřeba použít jiné debuggery.

Naštěstí můžete místo toho použít doporučené knihovny jako ipdb, Django-debug-toolbar, pyelftools, viztracer a py-spy jako nástroje pro ladění kódu Pythonu.

Nástroj pro ladění ipdb

Plně Python Debugger s podporou IPythonu je interaktivní debugger třetí strany, který obsahuje pdbfunkčnost. IPbd také přichází s podporou interaktivního shellu IPython. Mezi další podpůrné funkce patří doplňování karet, podpora barev a magické funkce.

  Virtually Forgotten: Nintendo's Virtual Boy, 25 Years later

Tento debugger umožňuje přístup k debuggeru IPython exportem příslušných funkcí. Nabízí také podobné rozhraní pro lepší introspekci, stejně jako v modulu pdb.

Ladění pomocí Ipdb

Knihovna vyžaduje instalaci pomocí příkazu pip níže.

pip install ipdb

Příklad použití ipdb by vypadal takto:

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()

Spusťte soubor python pomocí příkazu níže, kde test.py je název mého souboru:

python -m ipdb test.py

Import ipdb a spuštění funkce ipdb.set_trace() umožní spuštění programu a spustí ladicí program.

Funkce ipdb.pm() (post-mortem) funguje podobně jako funkce %debug magic.

argumenty set_trace

Předejte kontext jako argument pro set_trace, aby se zobrazilo několik definovaných řádků kódu. Navíc cond, který set_trace také přijímá jako argument, přijímá booleovské hodnoty a spouští rozhraní ipdb, když nastavíte cond na true.

Pomocí konfiguračního souboru

Nastavte argument kontextu pomocí souboru idpdb nebo souboru setup.cfg dostupného v domovské složce a složce projektu. Můžete dále zkontrolovat funkčnost ipdb.

Panel nástrojů Django Debug

The Panel nástrojů pro ladění Django je populární ladicí nástroj v Django: framework Python.

Tato konfigurovatelná sada panelů zobrazuje informace o ladění aktuálního požadavku nebo odpovědi. Když kliknete na panel nástrojů, zobrazí se další podrobnosti o obsahu panelu.

Tento nástroj důkladně prověřuje vývojové prostředí Django.

Postupujte podle instalačního procesu a pokynů pro konfiguraci tady.

Knihovna Pyelftools

The pyelftools knihovna je postavena čistě na Pythonu. Analyzuje a analyzuje soubory ELF a informace o ladění DWARF a ke spuštění vyžaduje pouze Python.

Použití Pyelftools je snadné, protože nemá externí knihovny. Navíc je použití pyelftools bez instalace docela snadné, protože jednoduše vyžaduje úpravu PYTHONPATH v proměnných prostředí.

Nainstalujete jej pomocí:

pip install pyelftools 

Implementace pyelftools jednoduše vyžaduje jejich import a vyvolání ve vašem programu.

  Jak stahovat videa Hotstar pro PC

Nástroj pro ladění zmrzliny 🍦

Toto je další účinný nástroj pro ladění pro vývojáře Pythonu.

Použitím zmrzlinataké ic(), přichází s mnoha výhodami oproti print(), jak je uvedeno níže:

  • Psaní je relativně rychlejší, doslova.
  • Docela dobře tiskne datové struktury.
  • Vytiskněte výrazy nebo názvy proměnných a jejich hodnoty pomocí ic().
  • Zvýrazňuje syntaxi výstupu.
  • Volitelně zahrnuje kontext programu, včetně názvu souboru, čísla řádku a rodičovské funkce.

Před použitím tohoto balíčku jej nainstalujte pomocí příkazu pip níže:

pip install icecream

Dobrá věc je, že můžete použít ic() ve všech souborech, aniž byste ji museli nutně importovat do všech souborů instalací pomocí install(). Navíc install() přidá ic() do vestavěného modulu. Všechny soubory, které interpret importuje, budou sdílet ic().

Do svého prvního kořenového python souboru, který můžete pojmenovat x.py, přidejte ic() pomocí install().

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

V souboru y.py se importuje soubor x.py, zavolejte ic()

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

Výsledek:

y
ic| z : 8

Co dělá ic() efektivnější, je jeho schopnost kontrolovat proměnné, které mu byly předány, včetně sebe sama, a poté vytisknout své argumenty a hodnoty argumentů jako v následujícím příkladu.

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

Výstup:

ic| mult(100): 400

Navíc můžete vložit ic() do již existujícího kódu, protože vrací své argumenty. Níže uvedený příklad vrátí ic| x: 12, pak ic| y: 48.

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

Ladění pomocí nástroje py-spy

Můžeš použít py-špion k profilování vzorků pro programy Python jako ladicí nástroj. Bez restartování programu nebo úpravy jeho kódu py-spy vizualizuje provádění programu Python. Navíc, protože je napsán v Rustu, má nízkou režii.

Kromě toho stojí za zvážení, že použití py-spy proti produkčnímu kódu Pythonu je bezpečné, protože spouští odlišný proces než profilovaný program Python.

  Jak vzdáleně otevřít aplikaci GUI pomocí PuTTY

Stejně jako každý jiný předchozí nástroj, který jsme viděli, můžete nástroj py-spy použít po jeho instalaci.

pip install py-spy 

Navzdory tomu, že váš program Python obsluhuje produkční provoz, stále můžete tento program profilovat a ladit pomocí py-spy, což z něj činí kritický nástroj profilování Pythonu.

Debugger Viztracer

Alternativně můžete použít viztracer, ladicí nástroj, ke sledování a vizualizaci provádění vašeho programu Python. Je to také profilovací nástroj s nízkou režií protokolování.

Co dělá viztracer účinný nástroj pro ladění?

  • Používání je docela snadné a není závislé na externích balíčcích, aby fungovaly.
  • Viztracer funguje na všech platformách operačního systému: Windows, Linux nebo macOS.
  • Jeho výkonný front-end plynule vykresluje trasování na úrovni GB.
  • Používá RegEx k přihlášení libovolných funkcí a dalších informací, jako je proměnné a atributy, Zvýšené výjimky, Operace Garbage Collectoratd., aniž byste upravovali jakoukoli část kódu ve zdrojovém kódu.
  • To, co dělá viztracer nástrojem pro ladění s nízkou režií, je jeho schopnost odfiltrovat data, která ve svém programu nepotřebujete. Poté uchová staré informace před uložením protokolu ve formátu JSON.
  • Můžete jej použít k vložení vlastních událostí, jako je okamžitá událost, proměnná událosta Trvání události jak program běží. Tímto způsobem to funguje jako ladění tisku, kromě toho, že vám viztracer dá vědět, kdy dojde k tisku, když trasujete data.

Závěr

Profilování a ladění Pythonu, stejně jako profilování softwaru, je klíčovým krokem ve vývoji, který vyžaduje pozornost. Tento krok pomáhá vyloučit jakékoli části kódu s chybami, aby byl optimalizován celkový výkon kódu.

Nástroje pro ladění, které jsme popsali výše, jsou účinné nástroje, které vývojářům v Pythonu docela usnadňují práci.

Vzhledem k tomu, že ostatní ladicí nástroje fungují efektivněji než cProfiler, můžete jako skutečný hrdina ladit svůj kód Pythonu a pomocí těchto ladicích programů opravovat případné chyby, abyste zabránili spuštění kódu bez pádu.

Šťastné ladění!