SO での再インポートに関する質問と回答はたくさんありますが、その背後にあるメカニズムを知らなければ、すべて直感に反するように思えます。
モジュールをインポートし、内容を変更してから再度インポートしようとすると、2 回目のインポートは効果がないことがわかります。
>>> import foo # foo.py contains: bar = 'original'
>>> print foo.bar
original
>>> # edit foo.py and change to: bar = 'changed'
>>> import foo
>>> print foo.bar
original
私が発見したとき、私はとても幸せなキャンピングカーでしたreload
:
>>> reload(foo)
>>> print foo.bar
changed
ただし、モジュール自体をインポートせずにモジュールからアイテムをインポートする場合、簡単な解決策はありません。
>>> from foo import baz
>>> print baz
original
>>> # change foo.py from baz = 'original' to baz = 'changed'
>>> from foo import baz
>>> print baz
original
>>> reload(foo)
Traceback (most recent call last):
File "<pyshell#10>", line 1, in <module>
reload(foo)
NameError: name 'foo' is not defined
import
新しいステートメントを与えたときに、Python がインポートされた項目を更新しないのはなぜですか?