Python シェルを開き、モジュールで定義されたコードを実行し、モジュールを変更してから、閉じたり再度開いたりせずに同じシェルで再実行できるようにしたいと考えています。
スクリプトを変更した後、関数/オブジェクトを再インポートしようとしましたが、うまくいきません:
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
明らかに、再インポートしても関数の「新しいバージョン」が得られませんでした。
この場合、インタプリタを閉じて再度開くのはそれほど大したことではありません。しかし、テストしているコードが非常に複雑な場合は、コードを適切にテストできるコンテキストを作成するために、かなりの量のオブジェクトをインポートしてダミー変数を定義する必要がある場合があります。変更するたびにこれを行わなければならないのは面倒です。
Pythonインターピーター内でモジュールコードを「リフレッシュ」する方法を知っている人はいますか?