Estoy desarrollando un paquete de Python usando un editor de texto e IPython. Cada vez que cambio alguno de los códigos del módulo, tengo que reiniciar el intérprete para probarlo. Esto es un dolor ya que las clases que desarrollo se basan en un contexto que debe restablecerse en cada recarga.¿Cómo desarrollar un módulo/paquete de Python sin tener que reiniciar el intérprete después de cada cambio?
Soy consciente de la función reload()
, pero esto parece ser frowned upon (también ya que se ha relegado de un built-in en Python 3.0) y, además, rara vez funciona ya que los módulos casi siempre tienen múltiples referencias.
Mi pregunta es: ¿cuál es la mejor/aceptada forma de desarrollar un módulo/paquete de Python para que no tenga que pasar por el dolor de restablecer constantemente mi contexto de intérprete?
Una idea en la que pensé fue utilizar el truco if __name__ == '__main__':
para ejecutar un módulo directamente, por lo que el código no se importa. Sin embargo, esto deja un montón de elementos contextuales (específicos de mi configuración) en la parte inferior de los archivos de mi módulo.
Ideas?
Usar% run para cargar desde un módulo es brillante, ¡gracias! – Brendan
El 'dreload()' también suena bien, pero parece que tiene problemas con Numpy; también parece ignorar todo lo que establecí en la lista de palabras clave 'exclude' ... – Brendan
El problema con Numpy y' dreload() 'es documentado aquí https://bugs.launchpad.net/ipython/+bug/306805 – Brendan