Reload (update) eine Moduldatei im Interpreter

Sagen wir, ich habe dieses Python-Skript script.py und ich lade es in den Dolmetscher, indem ich script.py

 import script 

Und dann mache ich meine Funktion durch Eingabe:

 script.testFunction(testArgument) 

OK so weit so gut, aber wenn ich script.py , wenn ich versuche, wieder zu importieren, wird das Skript nicht aktualisiert. Ich muss den Dolmetscher verlassen, den Dolmetscher neu starten und dann die neue Version des Skripts importieren, damit es funktioniert.

Was soll ich stattdessen tun

3 Solutions collect form web for “Reload (update) eine Moduldatei im Interpreter”

Sie können ein reload script ausgeben, aber das wird nicht Ihre vorhandenen Objekte aktualisieren und wird nicht tief in andere Module gehen.

Glücklicherweise wird dies von IPython gelöst – eine bessere Python-Shell, die das automatische Neuladen unterstützt.

Um autoreloading in IPython , musst du zuerst import ipy_autoreload , oder leg es dauerhaft in dein ~/.ipython/ipy_user_conf.py .

Dann renne:

 %autoreload 1 %aimport script 

%autoreload 1 bedeutet, dass jedes Modul, das mit %aimport geladen wurde, vor dem Ausführen von Code aus der Eingabeaufforderung neu geladen wird. Dadurch werden keine vorhandenen Objekte aktualisiert.

Siehe http://ipython.org/ipython-doc/dev/config/extensions/autoreload.html für mehr Spaß Dinge, die Sie tun können.

http://docs.python.org/library/functions.html#reload

Reload (Modul)

Laden Sie ein zuvor importiertes Modul neu. Das Argument muss ein Modulobjekt sein, also muss es schon erfolgreich importiert worden sein. Dies ist sinnvoll, wenn Sie die Modul-Quelldatei mit einem externen Editor bearbeitet haben und die neue Version ausprobieren möchten, ohne den Python-Interpreter zu verlassen. Der Rückgabewert ist das Modulobjekt (das gleiche wie das Modulargument).

Eine alternative Lösung, die mir sehr geholfen hat, ist es, eine Kopie von sys.modules Schlüsseln zu pflegen und die neuen Module nach dem Import zu platzieren, um die Wiedereinfuhren von tiefen Importen zu erzwingen:

 >>> oldmods = set(sys.modules.keys()) >>> import script >>> # Do stuff >>> for mod in set(sys.modules.keys()).difference(oldmods): sys.modules.pop(mod) >>> import script 
  • Python importiert über Module und globale Variablen
  • Python kann das installierte Modul `news` nicht sehen
  • Soll ich meine Python-Module installieren?
  • In Python kann ich das Haupt- () eines importierten Moduls anrufen?
  • Was könnte dazu führen, dass ein Python-Modul zweimal importiert wird?
  • __package__ ist beim Import eines Python-Moduls keine
  • Was ist __init__.py für?
  • Python-Modul und __all__
  • Wie bekomme ich eine Liste von lokal installierten Python-Modulen?
  • Umgang mit Pylab Import Fehler undefined Symbol
  • Vollständig qualifizierter Name eines Python-Moduls
  • Python ist die beste Programmiersprache der Welt.