paquetes - instalar pip python windows
¿Cuáles son buenas maneras de hacer que mi código Python se ejecute por primera vez? (16)
Aquí hay algunas técnicas para facilitar la depuración en Python:
utilizar shell interactivo, por ejemplo, ipython . Python es un lenguaje dinámico en el que puedes explorar tu código mientras escribes. El shell se ejecuta en la segunda ventana de mi editor en todo momento.
copiar y pegar desde el shell en docstrings un código que ilustra un uso dominante y casos de esquina de la función (clase, módulo).
doctest.testmod()
colocado en unaif __name__=="__main__"
permite probar todas las cadenas de documentos en el módulo. doctest se puede integrar fácilmente con unittest .use
assert
para cosas que nunca pueden suceder.print()
puede resolver muchos problemas de depuración; módulo de logging es adecuado para procesos de pitón de larga duración.escribir pruebas (no necesariamente antes de su código), ejecútelas a menudo (automáticamente o con una sola pulsación de tecla); nose proporciona detección extendida de pruebas y funciones de ejecución para unittest .
ejecuta la pylint vez en cuando.
En este punto, hay un pequeño uso para un depurador de python formal. Winpdb es un depurador de python GPL con interfaz gráfica multiplataforma externo si lo necesita.
Estoy recibiendo bastantes errores en mi código. En consecuencia, me gustaría poder minimizarlos desde el principio o ver tantos errores como sea posible antes de la ejecución del código. ¿Es esto posible y si es así, cómo puedo hacer esto?
Configuré Python para iniciar automáticamente el depurador cuando hay una excepción no detectada, usando este truco . De esta forma, puede examinar fácilmente el estado del programa sin demasiado código de registro. (Además, para enviarme una notificación de Growl ).
Ah, y de esta manera puedes simplemente crear un punto de quiebre en el código agregando
if answer == 42:
1/0
El plugin de PyDev para eclipse es mi herramienta de elección. Reconoce errores de sintaxis simples y errores de sangría y subraya el error con una línea roja. Tiene un potente depurador e incluso tiene un complemento llamado PyLint que le advierte sobre el código peligroso.
Editar: También tiene un seguimiento de pila fácil de usar en los errores de tiempo de ejecución, autocompletar parcial y algunas otras características ingeniosas.
Editar de nuevo: no noté que pydev fue mencionado en la publicación superior. Espero haber traído algo más a la mesa.
El shell Python de IPython tiene un comando %pdb
que invoca automáticamente el depurador en caso de problema. Luego puede inspeccionar variables, recorrer el código, etc.
Puede ejecutar sus programas desde IPython con el comando %run
.
De manera más general, como se señaló en algunas otras respuestas, un buen caparazón de Python es tu amigo. E IPython es tu mejor amigo. :)
Eric4 IDE también tiene un gran depurador incorporado.
Hay un muy buen depurador de GUI para Python llamado Winpdb . Pruébalo. Creado en la biblioteca wxWidgets y multiplataforma.
La identificación de errores antes de la ejecución es el dominio de comprobación / análisis estático. He tenido la suerte de usar PyChecker para la comprobación estática básica del código de Python.
El sitio pycheesecake tiene un muy buen resumen de las herramientas de prueba para Python.
Muy a menudo, utilizo un montón de declaraciones impresas.
page = grabpage(url)
print "Page content:", page
print "page type():", type(page)
A veces es útil hacer algo como:
debug = True
if debug: print "page content", page
..con esto puede desactivar rápidamente todas sus declaraciones de impresión de depuración cambiando la variable de depuración a False.
Mientras que la depuración de impresión lo llevará muy lejos en la mayoría de los casos, a veces es difícil depurar cosas como bucles, o una serie de if / else / try / except / etc. Para esto, es útil un depurador que permita avanzar a través de su código y establecer puntos de interrupción.
pdb
se incluye con Python. Here hay un buen tutorial simple sobre eso. Incluso puede hacer cosas como cambiar variables durante el tiempo de ejecución (que cubre el tutorial). Un tutorial más largo se puede encontrar here
Hay una muy buena GUI equivalente pdb - Winpdb
Básicamente ejecuta winpdb myscript --arg 4 -b 4
luego carga el comando en un terminal, le muestra su código a la izquierda, con el actual, una lista de variables locales / globales (y sus valores) y la llamada actual- apilar.
Luego puede recorrer el código haciendo clic en el Paso (o F6). F5 ejecuta el código. Si hace clic en al lado de los números de línea, establece un punto de interrupción, donde el código pasará automáticamente (cuando presiona ejecutar).
Me resulta mucho más fácil de usar y tiene muchas mejoras adicionales (como la depuración remota, por lo que puede ejecutar la parte de back-end ( rpdb2
) en la aplicación que se va a depurar y conectar Winpdb a ella (cifrado). tiene soporte para subprocesos y otras cosas útiles que no están en PDB. También tiene acceso a una consola similar a pdb.
Para una experiencia más integrada puedes usar IDE completo como PyCharm:
http://blog.jetbrains.com/pycharm/files/2011/05/template-debug2.png
Pruebe temprano y pruebe a menudo.
Esto no significa necesariamente que salte primero al grupo de diseño de prueba (aunque esa no es una mala idea). Simplemente significa probar tus objetos y métodos tan pronto como tengas algo que funcione. No espere hasta que tenga una gran pila de código antes de hacer las pruebas.
Invierta algún tiempo en aprender un marco de prueba. Si es trivial escribir un caso de prueba, lo más probable es que lo haga. Si no tiene ningún tipo de prueba marco puede ser un dolor por lo que lo evitará. Entonces, establezca buenos hábitos desde el principio y tendrá menos problemas en el futuro.
Python proporciona un depurador que le permite recorrer su código, inspeccionar variables y manipularlas. Consulte http://pythonconquerstheuniverse.wordpress.com/category/python-debugger/ que lo puede llevar por los pasos ...
También consulte la referencia de biblioteca estándar de python para pdb http://www.python.org/doc/2.5.2/lib/module-pdb.html
Si tiene problemas con la sintaxis, puede probar un editor con resaltado de sintaxis. Hasta que no tenga la sensación de un idioma, los errores simples no aparecerán solo en usted.
La forma más simple de depuración es simplemente insertar algunas instrucciones de impresión. Una manera más avanzada (y extensible) de hacer esto sería usar el módulo de logging de la biblioteca estándar.
El intérprete interactivo es una herramienta maravillosa para trabajar con el código python, e IPython es una gran mejora con respecto a la REPL incorporada (leer el lazo de evaluación de impresión).
Si realmente desea pasar por su código, el depurador de python se llama pdb , que puede pdb desde la línea de comandos o incrustarse en su código.
Si está acostumbrado a un IDE completamente integrado, le recomendaría usar Eclipse con pydev, y PyCharm tiene una gran oferta comercial, con autocompletado, acceso rápido a documentos y numerosos atajos, entre muchas otras características interesantes.
Soy nuevo en Python y he estado probando varios depuradores diferentes. Estas son las opciones que he encontrado hasta ahora:
- Eclipse con Pydev : si ya está usando eclipse, este es probablemente el camino a seguir. El depurador funciona bien y es bastante funcional.
- IDE de Komodo : un IDE de pitón ligero. Básicamente un editor de texto + un depurador. Fue muy fácil descubrirlo y ser productivo de inmediato.
- WinPDB - Probando este a continuación. Parece muy funcional, y puedo usar cualquier editor que elija.
- PDB : No lo he intentado todavía porque he leído que WinPDB es una mejor alternativa.
- Ipython con el comando% run : he usado IPython, pero no como un depurador como este. Necesito probar esto. (Gracias por la sugerencia, EOL)
- Eric IDE - También en la lista para probar.
- Impresión de la vieja escuela, declaraciones afirmativas : simple, útil, pero no una solución completa.
Depuración de memoria : para depurar problemas de memoria, me he encontrado con algunas herramientas:
- objgraph - Generará png''s de gráficos de referencia. Ordenado. También hay otras funciones, como: import objgraph; print (objgraph.show_most_common_types (limit = 10)) imprimirá los 10 tipos más comunes en la memoria.
- Módulo gc : Interactúa directamente con el recolector de basura.
- Heapy - Heap analizador. Por ejemplo: de guppy import hpy; hp = hpy (); print (hp.heap ()) imprimirá los tipos más comunes, su uso de memoria, etc.
Esta es una lista muy incompleta, pero espero que sea un buen comienzo.
Todas las cosas realmente geniales se demuestran fácilmente en el intérprete interactivo. Creo que este podría ser el "estándar de oro" para un buen diseño:
¿Puedes ejercitar tu clase de forma interactiva?
Si puede hacer cosas de manera interactiva, puede escribir pruebas de unidad y pruebas de docencia con la certeza de que es comprobable, simple y confiable.
Y, lo que es más importante, puedes explorarlo de manera interactiva. No hay nada mejor que la gratificación instantánea que proviene de escribir el código y ver exactamente lo que sucede.
Los hábitos de lenguaje compilados (escribir un montón de cosas, depurar un montón de cosas, probar un montón de cosas) se pueden dejar atrás. En cambio, puedes escribir un poco de cosas, explorarlas, escribir una prueba formal y luego adjuntar tus pequeñas cosas a tu creciente proyecto final.
Todavía haces diseño general. Pero no desperdicia tiempo escribiendo código que puede funcionar o no. En Python escribes código que funciona. Si no estás seguro, juegas interactivamente hasta que estés seguro. Luego escribes código que funciona.
Usar la declaración de afirmación liberalmente.
python -m pdb yourcode.py debería hacerlo. Alternativamente, puede "importar pdb" en su código y usar pdb.set_trace () para establecer puntos de interrupción. Consulte el manual para obtener más información: http://www.python.org/doc/2.5.2/lib/module-pdb.html