Python-Shell und execfile Anwendungsbereich
Frage
Ich bin aus dem Inneren eines ipython Shell arbeiten und oft müssen die Skriptdateien neu zu laden, die meine Funktionen-under-Konstruktion enthalten.
In meinem main.py ich habe:
def myreload (): execfile ( "main.py") execfile ( "otherfile.py")
Der Aufruf myreload () funktioniert gut, wenn ich schon in der gleichen ipython Sitzung Befehle die execfile direkt ran.
Doch aus irgendeinem Grund, wenn die Sitzung frisch ist und ich rief nur execfile ( „main.py“), dann myreload () nicht wirklich die Funktionen machen von innen otherfile.py zur Verfügung. Es macht keinen Fehler aus, though.
Irgendwelche Ideen?
Lösung
Funktionen erstellen Sie einen neuen Rahmen. execfile()
führt das Skript im aktuellen Bereich. Was Sie tun, wird nicht funktionieren.
Andere Tipps
Wenn Sie versuchen, die tatsächliche korrekte Verwendung von ipython (das heißt im interaktiven Modus) zu lernen, dann sollten Sie magische Befehle wie verwenden:
%run
und
%edit
Überprüfen Sie Hilfe für diese Funktionen mit %run?
. Dies bietet explizite Beispiele.
Siehe auch http://ipython.org/ipython-doc/stable/ interactive / tutorial.html