_foo.py
_があります
_def foo():
print "test"
_
IPythonでは次を使用します。
_In [6]: import foo
In [7]: foo.foo()
test
_
次に、foo()
を次のように変更しました。
_def foo():
print "test changed"
_
IPythonでは、呼び出しの結果はまだtest
です:
_In [10]: import foo
In [11]: foo.foo()
test
_
次に使用します:
_In [15]: del foo
In [16]: import foo
In [17]: foo.foo()
test
_
同じフォルダーにある_foo.pyc
_を削除します_foo.py
_は存在しますが、まだ運がありません。
実行時に更新されたコードを再インポートする方法を知っていますか?
Python 2.x
reload(foo)
Python 3.x
import importlib
import foo #import the module here, so that it can be reloaded.
importlib.reload(foo)
IPython3の autoreload 機能は適切に機能します。
Webページから実際の例を使用しています。最初に「自動リロード」機能をロードします。
In []: %load_ext autoreload
In []: %autoreload 2
次に、テストするモジュールをインポートします。
In []: import foo
In []: foo.some_function()
Out[]: 42
エディターでfoo.pyを開き、some_functionを変更して43を返します
In []: foo.some_function()
Out[]: 43
関数を直接インポートする場合にも機能します。
In []: from foo import some_function
In []: some_function()
Out[]: 42
Some_functionを変更して43を返します。
In []: some_function()
Out[]: 43
これを自動的に実行したい場合、iPythonに付属の autoreload モジュールがあります。