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 web scraping y aplicaciones más complejas como el aprendizaje automático y la ciencia de datos.
During development, errors called bugs in programming are prone to occur. Developers take several steps to detect and eliminate the existing and potential bugs from the code. As a result, you prevent the program code from crushing. We call this process debugging.
Este artículo analizará varios depuradores de Python disponibles que puede usar. También veremos cuán diferentes son estos depuradores son unos de otros y lo que 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 que se tarda en ejecutar diferentes secciones del código, no identifica ni corrige completamente los errores en el código.
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 funciones 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 pitón 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 del ipdb.set_trace()
La función permite el comienzo del programa y ejecuta el depurador a través de la ejecución.
El ipdb.pm()
función (post-mortem) actúa de manera similar a la %debug
función mágica.
argumentos set_trace
Pasar el contexto como argumento a set_trace
para mostrar varias líneas de código definidas. Además, cond
, cual set_trace
también acepta como argumento, acepta valores booleanos e inicia la interfaz ipdb cuando configura cond
a true
.
Usando el archivo de configuración
Establezca el argumento de contexto con un archivo idpdb o el setup.cfg
archivo 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
El 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
El herramientas La biblioteca está construida puramente en Python. Analiza y analiza los archivos ELF y la información de depuración de DWARF y solo requiere Python para ejecutarse.
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.
Usar helado, Por lo tanto 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 puedes aprovechar ic()
en todos los archivos sin importarlo necesariamente en todos los archivos instalándolo usando install()
. Por otra parte, install()
añade ic()
al módulo incorporado. Todos los archivos que importa el intérprete compartirán ic()
.
En su primer archivo root 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))
Salida:
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 py-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.
¿Qué te 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 basura, etc., 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áneo, la evento variable, y la 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.
Para Concluir
Perfilado y depuración de Python como 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 Python y corregir cualquier error potencial using these debuggers to prevent your code from running without crashing.
¡Feliz depuración!