Ich möchte in der Lage sein, eine Python-Shell zu öffnen, in einem Modul definierten Code auszuführen, das Modul zu ändern und es dann erneut auszuführen in der gleichen Hülle ohne zu schließen/wieder zu öffnen.Code aus einem Python-Modul ausführen, Modul ändern und dann erneut ausführen, ohne interpeter zu beenden
Ich habe versucht, die Funktionen/Objekte neu zu importieren, nachdem das Skript ändern, und das nicht funktioniert:
Python 2.7.2 (default, Jun 20 2012, 16:23:33)
[GCC 4.2.1 Compatible Apple Clang 4.0 (tags/Apple/clang-418.0.60)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from my_module import buggy_function, test_input
>>> buggy_function(test_input)
wrong_value # Returns incorrect result
# Go to the editor, make some changes to the code and save them
# Thought reimporting might get the new version
>>> from my_module import buggy_function, test_input
>>> buggy_function(test_input)
wrong_value # Returns the same incorrect result
Klar reimporting habe mich nicht die ‚neue Version‘ der Funktion.
In diesem Fall ist es nicht so schlimm, den Interpreter zu schließen und wieder zu öffnen. Aber wenn der Code, den ich teste, kompliziert genug ist, muss ich manchmal eine Menge Objekte importieren und Dummy-Variablen definieren, um einen Kontext zu erstellen, der den Code angemessen testen kann. Es wird nervig, dies jedes Mal machen zu müssen, wenn ich etwas ändere.
Wer weiß, wie man den Modulcode innerhalb des Python-Interpeters "auffrischt"?
Sie können jederzeit ein Modul schreiben, das alles definiert Dummy-Variablen importiert, usw., und dann jedes Mal den Interpreter wieder öffnen, die Sie gerade 'von testsetup import *' bekommen die right context (oder 'python -i test setup.py' statt nur' python'). – abarnert