In der Python-Shell von emacs (ich verwende 2. * Python) importiere ich eine .py-Datei, mit der ich arbeite, und teste den Code. Wenn ich den Code ändere, bin ich mir nicht sicher, wie ich ihn wieder importieren soll.
Aus meiner bisherigen Lektüre scheint das
zu sein %Vor%sollte funktionieren, scheint es aber nicht.
Vielleicht reicht es einfach, die Python-Shell herunterzufahren und neu zu starten, gibt es dafür einen Befehl oder Sie tun es einfach manuell?
edit: Es sieht aus wie python-send-defun und python-send-buffer wäre ideal, aber Änderungen scheinen sich nicht zu verbreiten.
Während reload()
funktioniert, ändert es die Verweise auf Klassen, Funktionen und andere Objekte nicht, daher ist es einfach, eine alte Version zu sehen. Eine konsistenteste Lösung besteht darin, reload()
entweder durch exec
zu ersetzen (was bedeutet, dass nicht import
an erster Stelle verwendet wird) oder den Interpreter vollständig neu zu starten.
Wenn Sie das Reload weiterhin verwenden möchten, achten Sie sehr darauf, wie Sie von diesem Modul aus referenzieren, und verwenden Sie immer den vollständigen Namen. Z.B. import module
und verwende module.name
anstelle von from module import name
. Und selbst wenn Sie vorsichtig sind, werden Sie immer noch Probleme mit alten Objekten bekommen, was ein Grund ist, dass reload()
nicht in 3.x ist.
Nachdem ich dieses Thema für eine ziemlich lange Zeit betrachtet habe, bin ich zu dem Schluss gekommen, dass die beste Lösung entweder eine Initialisierungsdatei Ihres Python-Interpreters (zB ipython) oder die Verwendung des Python-Builds ist -in Modul "imp" und seine Funktion "reload". Zum Beispiel am Anfang Ihres Codes:
%Vor%Diese Lösung kam von dieser Seite zu mir: Ссылка