Sto sviluppando un pacchetto Python usando un editor di testo e IPython. Ogni volta che cambio uno qualsiasi dei codici del modulo devo riavviare l'interprete per testarlo. Questo è un dolore poiché le classi che sto sviluppando si basano su un contesto che deve essere ristabilito su ogni ricarica.Come sviluppare un modulo/pacchetto Python senza dover riavviare l'interprete dopo ogni modifica?
sono consapevole della funzione reload()
, ma questo sembra essere frowned upon (anche in quanto è stato relegato da un built-in in Python 3.0) e inoltre funziona raramente dal momento che i moduli hanno quasi sempre più riferimenti.
La mia domanda è: qual è il modo migliore/accettato per sviluppare un modulo/pacchetto Python in modo che non debba passare attraverso il dolore di ristabilire costantemente il mio contesto di interprete?
Un'idea a cui pensavo stava utilizzando il trucco if __name__ == '__main__':
per eseguire direttamente un modulo in modo che il codice non venisse importato. Comunque questo lascia un po 'di cruft contestuale (specifico per il mio setup) nella parte inferiore dei miei file del modulo.
Idee?
L'utilizzo di% run da caricare da un modulo è geniale, grazie! – Brendan
Anche il 'dreload()' sembra buono ma sembra che si imbattano in problemi con Numpy - sembra anche ignorare tutto ciò che ho impostato nell'elenco delle parole chiave 'exclude' ... – Brendan
Il problema con Numpy e 'dreload()' è documentato qui https://bugs.launchpad.net/ipython/+bug/306805 – Brendan