Herramientas de desarrollo¶
A lo largo de su vida, Python ha desarrollado un amplio ecosistema de módulos destinados a hacer las vidas de los desarrolladores de Python más fácil eliminando la necesidad de construir todo desde cero. Esa misma filosofía se ha aplicado a las herramientas que los desarrolladores utilizan para hacer su trabajo, incluso si no se usan en la versión final de un programa. Este capítulo cubre los módulos incluidos con Python para proporcionar facilidades para tareas comunes de desarrollo tales como pruebas, depuración y creación de perfiles.
La forma más básica de ayuda para un desarrollador es la documentación para el
código que están usando. El módulo pydoc
genera documentación de
referencia formateada de las cadenas de documentación incluidas en la código
fuente para cualquier módulo importable.
Python incluye dos marcos de prueba para ejercitar automáticamente código y
verificar que funciona correctamente. doctest
extrahe escenarios de
prueba a partir de ejemplos incluidos en la documentación, ya sea dentro del
código fuente o como archivos independientes. unittest
es un marco de
prueba automatizado con todas las funciones con soporte para artículos fijos,
suites de prueba pre definidos y descubrimiento de pruebas.
El módulo trace
monitorea la forma en que Python ejecuta un programa,
produciendo un informe que muestra cuántas veces se ejecutó cada línea. Esa
información se puede utilizar para encontrar rutas de código que no se están
probando mediante un conjunto de pruebas automatizadas, y para estudiar el
gráfico de llamadas de función y encontrar dependencias entre módulos.
Escribir y ejecutar pruebas descubrirá problemas en la mayoría de los
programas. Python ayuda a que la depuración sea más fácil, ya que en la
mayoría de los casos errores no manejados se imprimen en la consola como
rastreos. Cuando un programa no se ejecuta en un entorno de consola de texto,
traceback
puede ser utilizado para preparar resultados similares para un
archivo de registro o mensaje de diálogo. En situaciones donde un rastreo
estándar no proporciona suficiente información, usa cgitb
para ver
detalles como variable locales de configuración en cada nivel de la pila y el
contexto original. cgitb
también puede formatear los rastreos en HTML,
para reportar errores en aplicaciones Web.
Una vez que identificada la ubicación de un problema, seguir el código
utilizando el depurador interactivo en el módulo pdb
puede hacer más
fácil de arreglar al mostrar qué camino a través del código se siguió para
llegar a la situación de error y experimentar con cambios usando objetos y
código directamente.
Después que un programa ha sido probado y depurar para que funcione
correctamente, el siguiente paso es trabajar en el rendimiento. Usando
profile
y timeit
, un desarrollador puede medir la velocidad de un
programa y encontrar las partes lentas para que puedan ser aisladas y
mejoradas.
Es importante sangrar el código fuente consistentemente en un idioma como
Python, donde el espacio en blanco es significativo. El módulo tabnanny
proporciona un escáner para informar sobre el uso ambiguo de sangría, y puede
usarse en pruebas para asegurar que el código cumpla con un estándar mínimo
antes de que se registre en el repositorio de origen.
Los programas de Python se ejecutan dando al intérprete un version compilada
por bytes de la fuente del original programa. Las versiones compiladas por
byte pueden crearse sobre la marcha, o una vez cuando el programa es
empaquetado. El módulo compileall
expone la interfaz utilizada por los
programas de instalación y las herramientas de empaque para crear archivos que
contienen el código de bytes para un módulo. Se puede usar en un entorno de
desarrollo para asegurarse de que un archivo no tiene ningún error de sintaxis
y para construir archivos de bytes compilados para empaquetar cuando se libera
el programa.
En el nivel de código fuente, el módulo pyclbr
proporciona una navegador
de clases que puede ser utilizado por un editor de texto u otro programa para
escanear la fuente en Python por símbolos interesantes como funciones y clases,
sin importar el código y potencialmente desencadenando efectos secundarios.
Los entornos virtuales de Python, gestionados por venv
, definen entornos
aislados para instalar paquetes y ejecutar programas. Ellos hacenes fácil
probar el mismo programa con diferentes versiones de dedependencias e instalar
diferentes programas con conflictos de dependencias en la misma computadora.
Aprovechando el gran ecosistema de módulos de extensión, marcos y herramientas
disponibles a través del Índice Python de Paquetes requiere un instalador de
paquete. El instalador de paquetes de Python, pip, no es distribuido con el
intérprete, debido al largo ciclo de publicación para el idioma en comparación
con las actualizaciones deseadas para la herramienta. El módulo
ensurepip
se puede utilizar para instalar la última versión de pip.
- pydoc — Ayuda en línea para módulos
- doctest — Pruebas a través de la documentación
- unittest — Marco de prueba automatizado
- trace — Seguir el flujo del programa
- traceback — Excepciones y rastreos de pila
- cgitb — Informes detallados de rastreo
- pdb — Depurador interactivo
- profile y pstats — Análisis de rendimiento
- timeit — Cronometrar la ejecución de pequeños fragmentos de código Python
- tabnanny — Validador de sangría
- compileall — Byte-compilar archivos fuente
- pyclbr — Navegador de clases
- venv — Crear entornos virtuales
- ensurepip — Instala el instalador de paquetes Python