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 
  • Mit __init__.py
  • Wie bekomme ich Python, um das Modul von $ HOME / lib / python über / usr / lib / python zu bevorzugen?
  • Gib eine Liste der importierten Python-Module zurück, die in einem Skript verwendet werden?
  • Python ImportError Lade-Modul im Unterordner
  • Wie kann ich den gemeinsamen Code in Python verwenden?
  • __builtin__ Modul in Python
  • Was könnte dazu führen, dass ein Python-Modul zweimal importiert wird?
  • Ist es möglich, Python nativ zu kompilieren (jenseits von pytes Byte-Code)?
  • Python-Paket installiert aber konnte nicht importieren
  • Wie lade ich kompilierte pythonmodule aus dem Speicher?
  • Soll ich meine Python-Module installieren?
  • Python ist die beste Programmiersprache der Welt.