Depure Python como un héroe con estas bibliotecas y herramientas

¿Quieres ser un verdadero experto en depuración de Python? ¡Depure su código de Python usando estas increíbles herramientas y bibliotecas de depuración de Python que pronto cubriremos!

Python es un lenguaje de programación de propósito general, de alto nivel y orientado a objetos que se utiliza para muchos propósitos de desarrollo. Además, es una herramienta de desarrollo eficaz para diferentes aplicaciones, desde el desarrollo de aplicaciones web hasta el web scraping y aplicaciones más complejas como el aprendizaje automático y la ciencia de datos.

Durante el desarrollo, es probable que ocurran errores llamados errores en la programación. Los desarrolladores toman varios pasos para detectar y eliminar los errores existentes y potenciales del código. Como resultado, evita que el código del programa se aplaste. A este proceso lo llamamos depuración.

Este artículo analizará varios depuradores de Python disponibles que puede usar. También veremos cuán diferentes son estos depuradores entre sí y qué hace que su implementación sea efectiva.

Biblioteca de depuración de cProfiler

perfilador c, es una biblioteca popular y una extensión de C que ejecuta perfiles de código de ejecución prolongada. A la larga, identifica las secciones del código del programa que tardan más en ejecutarse. Aunque identifica el tiempo preciso necesario para ejecutar diferentes secciones del código, no identifica ni corrige errores en el código por completo.

Por lo tanto, surge la necesidad de utilizar otros depuradores.

Afortunadamente, puede usar bibliotecas recomendadas como ipdb, Django-debug-toolbar, pyelftools, viztracer y py-spy como herramientas de depuración para su código de Python.

La herramienta de depuración de ipdb

El depurador de Python habilitado para IPython en su totalidad es un depurador interactivo de terceros que contiene pdbla funcionalidad de. Ipbd también viene con soporte IPython de shell interactivo. Dicho soporte incluye finalización de pestañas, soporte de color y funciones mágicas, entre otras características de soporte.

Este depurador permite el acceso al depurador de IPython mediante la exportación de funciones relevantes. También ofrece una interfaz similar para una mejor introspección, al igual que en el módulo pdb.

Depuración con Ipdb

La biblioteca requiere instalación usando el comando pip a continuación.

pip install ipdb

Un ejemplo del uso de ipdb se vería así:

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

Ejecute el archivo python usando el siguiente comando donde test.py es el nombre de mi archivo:

python -m ipdb test.py

La importación de ipdb y la ejecución de la función ipdb.set_trace() permite el inicio del programa y ejecuta el depurador a través de la ejecución.

La función ipdb.pm() (post-mortem) actúa de manera similar a la función mágica %debug.

argumentos set_trace

Pase el contexto como argumento a set_trace para mostrar varias líneas de código definidas. Además, cond, que set_trace también acepta como argumento, acepta valores booleanos e inicia la interfaz ipdb cuando establece cond en verdadero.

Usando el archivo de configuración

Establezca el argumento de contexto con un archivo idpdb o el archivo setup.cfg disponible en la carpeta de inicio y la carpeta del proyecto, respectivamente. Le invitamos a verificar más la funcionalidad de ipdb.

Barra de herramientas de depuración de Django

los Barra de herramientas de depuración de Django es una herramienta de depuración popular en Django: un marco de Python.

Este conjunto configurable de paneles muestra la información de depuración de una solicitud o respuesta actual. Al hacer clic en la barra de herramientas, se muestran más detalles sobre el contenido del panel.

Esta herramienta inspecciona minuciosamente el entorno de desarrollo de Django.

Siga el proceso de instalación y las instrucciones de configuración aquí.

Biblioteca de Pyelftools

los herramientas La biblioteca está construida puramente en Python. Analiza y analiza archivos ELF e información de depuración DWARF y solo requiere que Python se ejecute.

Usar Pyelftools es fácil ya que no tiene bibliotecas externas. Además, usar pyelftools sin instalación es bastante fácil, ya que simplemente requiere ajustar PYTHONPATH en las variables de entorno.

Lo instalarás usando:

pip install pyelftools 

La implementación de pyelftools simplemente requiere importarlo e invocarlo en su programa.

La herramienta de depuración icecream 🍦

Esta es otra herramienta de depuración eficiente para los desarrolladores de Python.

Usando heladotambién ic(), viene con muchos beneficios sobre print(), como se describe a continuación:

  • Escribirlo es relativamente más rápido, literalmente.
  • Imprime estructuras de datos bastante bien.
  • Imprime expresiones o nombres de variables y sus valores con ic().
  • Resalta la sintaxis de la salida.
  • Opcionalmente, incluye el contexto del programa, incluido el nombre del archivo, el número de línea y la función principal.

Antes de usar este paquete, instálelo usando el comando pip a continuación:

pip install icecream

Lo bueno es que puede hacer uso de ic() en todos los archivos sin necesariamente importarlo en todos los archivos instalándolo usando install(). Además, install() agrega ic() al módulo incorporado. Todos los archivos que importe el intérprete compartirán ic().

En su primer archivo raíz de python, al que puede llamar x.py, agregue ic() usando install().

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

En el archivo y.py, el archivo x.py se está importando, llame a ic()

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

Resultados:

y
ic| z : 8

Lo que hace que ic() sea más eficiente es su capacidad para inspeccionar las variables que se le pasan, incluido él mismo, y luego imprimir sus argumentos y los valores de los argumentos como en el siguiente ejemplo.

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

Producción:

ic| mult(100): 400

Además, puede insertar ic() en código preexistente ya que devuelve sus argumentos. El siguiente ejemplo devuelve ic| x: 12, entonces ic| y: 48.

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

Depuración con la herramienta py-spy

Puedes usar espía para generar perfiles de muestras para programas de Python como una herramienta de depuración. Sin reiniciar el programa ni modificar su código, py-spy visualiza la ejecución del programa Python. Además, debido a que está escrito en Rust, tiene una sobrecarga baja.

Además, vale la pena considerar que usar py-spy contra el código Python de producción es seguro porque ejecuta un proceso diferente del programa Python perfilado.

Como cualquier otra herramienta anterior que hemos visto, puede usar la herramienta py-spy después de instalarla.

pip install py-spy 

A pesar de que su programa de Python atiende el tráfico de producción, aún puede perfilar y depurar este programa usando py-spy, lo que lo convierte en una herramienta crítica de perfilado de Python.

Depurador de Viztracer

Alternativamente, puede usar viztracer, una herramienta de depuración, para rastrear y visualizar la ejecución de su programa Python. También es una herramienta de creación de perfiles con registro de baja sobrecarga.

que hace rastreador una herramienta de depuración eficaz?

  • Usarlo es bastante fácil y no depende de paquetes externos para funcionar.
  • Viztracer funciona en todas las plataformas de sistemas operativos: Windows, Linux o macOS.
  • Su potente interfaz de usuario procesa sin problemas el seguimiento a nivel de GB.
  • Utiliza RegEx para registrar funciones arbitrarias e información adicional como variables y atributos, Excepciones planteadas, Operaciones del recolector de basuraetc., sin modificar ninguna sección de código dentro de su código fuente.
  • Lo que hace que viztracer sea una herramienta de depuración de bajo costo es su capacidad para filtrar los datos que no necesita en su programa. Luego conserva la información anterior antes de volcar el registro en formato JSON.
  • Puede usarlo para insertar eventos personalizados como el evento instantáneola evento variabley el Duración del evento mientras se ejecuta el programa. De esta manera, funciona como una depuración de impresión, excepto que viztracer le permite saber cuándo ocurre la impresión a medida que rastrea los datos.

Conclusión

La creación de perfiles y la depuración de Python, al igual que la creación de perfiles de software, es un paso clave en un desarrollo que llama la atención. Este paso ayuda a descartar cualquier sección de código con errores para optimizar el rendimiento general del código.

Las herramientas de depuración que hemos cubierto anteriormente son herramientas eficientes que facilitan bastante el trabajo de un desarrollador de Python.

Al ver que las otras herramientas de depuración funcionan de manera más efectiva que cProfiler, puede, como un verdadero héroe, depurar su código de Python y corregir cualquier error potencial usando estos depuradores para evitar que su código se ejecute sin bloquearse.

¡Feliz depuración!