2010-11-02 11 views
5

Pregunta para principiantes. He comenzado mi shell ipython y estoy ejecutando scripts con el comando run-command y todo funciona muy bien. Sin embargo, al ejecutar un archivo de comandos y luego editar un archivo de script importado y luego intentar ejecutarlo de nuevo, se ejecuta el archivo importado anterior. Así que supongo que Python guarda algún tipo de caché para la velocidad. He intentado limpiar el comando y tal, pero fue en vano.¿Cómo actualizar una importación de script ejecutada en el shell de Python después de editarlo?

Básicamente mi problema es esto. Dos archivos: function.py y program.py. El archivo de programa importa la función. Pero ejecutar el programa y luego editar la función y luego ejecutar nuevamente el programa hace que se ejecute la antigua función/versión no editada.

+0

¿Por qué no ejecuta el 'program.py' desde la línea de comandos? –

Respuesta

8

Dentro de iPython o el intérprete estándar de Python, puede usar la función reload() para volver a cargar un módulo importado.

Ejemplo:

In [1]: import foo 
    # make some changes to the foo.py 
In [2]: reload(foo) 
+0

Así que agregar una recarga después del comando de importación en el archivo de script realmente funciona. Sin embargo, sería bueno con algún tipo de comando de descarga. –

0

Se dice here que el archivo se vuelve a leer del disco cada vez, ¿está seguro de que el error no está de su lado?

+0

Sí, es mi culpa. El archivo de script que ejecuto se actualiza pero no el archivo de script importado en el archivo de script que estoy ejecutando. –

1

función Uso Python's reload recompilar el código del módulo y vuelva a ejecutar todo el código de nivel de módulo - de lo contrario el intérprete Python utilizará el código de bytes compilado rancio (.pyc). Por ejemplo:

In [1]: import script 

In [2]: run script 
... 

In [3]: reload(script) 
Out[3]: <module 'script' from 'script.pyc'> 
... 
In [4]: run script 
Cuestiones relacionadas