Abilita IPython estensione autoreload prima di importare qualsiasi codice:
%load_ext autoreload
%autoreload 2
lo uso con il guscio Django regolare e funziona perfettamente, anche se ha alcune limitazioni:
Avvertenze:
moduli ricaricamento Python in modo affidabile è in generale difficile, e possono verificarsi cose inaspettate . % autoreload tenta di aggirare le insidie più comuni sostituendo gli oggetti del codice funzione e parti di classi precedentemente nel modulo con nuove versioni. Questo fa funzionare le cose seguenti:
- Le funzioni e le classi importate tramite 'da xxx import foo' vengono aggiornate alle nuove versioni quando 'xxx' viene ricaricato.
- I metodi e le proprietà delle classi vengono aggiornati al momento del caricamento, in modo che la chiamata 'c.foo()' su un oggetto 'c' creato prima del ricaricamento causi l'esecuzione del nuovo codice per 'pippo'.
Alcuni dei noti avvertimenti rimanenti sono:
- Sostituzione oggetti di codice non sempre riesce: cambiare una @property in una classe per un metodo ordinario o di un metodo per una variabile membro può causare problemi (ma solo in vecchi oggetti).
- Le funzioni rimosse (ad esempio tramite patch di scimmia) da un modulo prima di essere ricaricate non vengono aggiornate.
- moduli di estensione C non possono essere ricaricati, e quindi non possono essere autoreloaded *
fonte:. https://ipython.org/ipython-doc/3/config/extensions/autoreload.html#caveats
Un altro grande opzione è quella di scrivere il codice in uno script separato e inviarlo a Django shell, come this:
manage.py shell < my_script.py
fonte
2016-10-07 14:18:16
La funzione di ricarica non funziona con django. Vedere: http://stackoverflow.com/questions/890924/how-do-you-reload-a-django-model-module-using-the-interactive-interpreter-via-ma – Hovis