Chciałbym móc otworzyć powłokę Pythona, wykonać kod zdefiniowany w module, następnie zmodyfikować moduł, a następnie ponownie go uruchomić. w tej samej powłoce bez zamykania/ponownego otwierania.Uruchom kod z modułu Pythona, zmodyfikuj moduł, a następnie uruchom ponownie bez wychodzenia z interpolatora.
Próbowałem ponownego importowania funkcji/obiektów po zmianie skryptu, i że nie działa:
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
Wyraźnie ponownego importowania nie dostać mi nową wersję „” funkcji.
W tym przypadku nie jest tak wielkim problemem, aby zamknąć tłumacza i otworzyć go ponownie. Ale jeśli testowany przeze mnie kod jest wystarczająco skomplikowany, czasami muszę wykonać sporą liczbę importowanych obiektów i zdefiniować fałszywe zmienne, aby utworzyć kontekst, który może odpowiednio przetestować kod. Denerwujące jest to, że muszę to robić za każdym razem, gdy dokonuję zmiany.
Ktoś wie, jak "odświeżyć" kod modułu w interpreterze Python?
Zawsze można napisać moduł, który importuje wszystko, definiuje zmienne fikcyjne, itp, a następnie za każdym razem ponownym otwarciu tłumacza, po prostu 'od importu testsetup *', aby uzyskać prawy kontekst (lub 'python -i testuj setup.py' zamiast tylko' python'). – abarnert