2010-11-02 4 views
5

Domanda per principianti. Ho iniziato la mia shell ipython e sto eseguendo script con il comando run e tutto funziona alla grande. Tuttavia, l'esecuzione di un file di script e la modifica di un file di script importato e il tentativo di eseguirlo di nuovo causano l'esecuzione del vecchio file importato. Quindi immagino che Python salvi un po 'di cache per la velocità. Ho provato un comando chiaro e così, ma senza successo.Come aggiornare un'importazione di script eseguita nella shell Python dopo averla modificata?

Fondamentalmente il mio problema è questo. Due file: function.py e program.py. Il file di programma importa la funzione. Ma eseguendo il programma e quindi modificando la funzione e quindi eseguendo nuovamente il programma, si esegue la vecchia funzione/versione modificata.

+0

Perché non sono in esecuzione il 'program.py' dalla riga di comando? –

risposta

8

All'interno di iPython o dell'interprete standard di Python, è possibile utilizzare la funzione reload() per ricaricare un modulo importato.

Esempio:

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

Quindi aggiungere una ricarica dopo il comando di importazione nel file di script fa davvero il trucco! Sarebbe bene con qualche tipo di comando di colore però. –

0

È dichiarato here che il file viene riletto dal disco ogni volta, sei sicuro che l'errore non è dalla tua parte?

+0

Sì, colpa mia. Il file di script che eseguo viene aggiornato ma non il file di script importato nel file di script che sto utilizzando. –

1

funzione Usa Python's reload ricompilare il codice modulo e rieseguire tutto il codice a livello di modulo - altrimenti l'interprete Python utilizzerà il bytecode compilato stantio (.pyc). Per esempio:

In [1]: import script 

In [2]: run script 
... 

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