schrieb ich mein eigenes Modul, das als die folgende Struktur:Auto-Update-Modul in IPython/jupyter Notebook
mymodule/
├── __init__.py
├── part1.py
├── part2.py
├── part3.py
└── part4.py
mein Modul Um zu testen, ich IPython und/oder jupyter Notebook (früher IPython Notebook) verwenden. Wie üblich habe ich das Modul Import wie
import mymodule
Lassen Sie uns sagen, dass ich einige Code in part2.py
bearbeiten und wollen die aktualisierte Version meines Modul verwenden. Zuerst dachte ich, nur das Modul durch import mymodule
remimport würde den Job tun, aber es tut es nicht. Um das Modul vollständig neu zu laden, muss ich die IPython-Shell schließen oder den Kernel von jupyter neu starten und neu starten, indem ich mymodule
importiere.
jedoch auf die docs reffering stellt IPython eine Auto-Update-Funktion namens autoreload
, die verschiedene Modi bietet und aktiviert werden konnte wie folgt:
%load_ext autoreload
%autoreload 1
%aimport mymodule
beide meiner Schnipsel verwenden, ich bin mymodule
wie das Importieren :
%load_ext autoreload
%autoreload 1
%aimport mymodule
import mymodule
# let's do something with the module here
aber auch bei aktivierter autoreload 1
oder autoreload 2
weder IPython noch jupyter tun, was ich erwarte, dass sie q zu tun, und ich habe immer noch Starten Sie die IPython-Shell oder starten Sie den Kernel von jupyter neu, um den bearbeiteten Code part2.py
zu verwenden, der Teil von mymodule
ist.
Was mache ich falsch? Es scheint, dass ich nicht verstanden habe, wie das funktionieren soll.
klingt wie ein Fehler, ich benutze '% autoreload 2' (eigentlich füge ich es zu' ipython_config.py') und es funktioniert für die meisten Fälle. Nur Mehrfachvererbung ist mühsam. – dashesy