Il y a beaucoup de questions et de réponses concernant les ré-importations sur SO, mais tout semble très contre-intuitif sans connaître les mécanismes derrière.
Si vous importez un module, changez le contenu, puis essayez de l'importer à nouveau, vous constaterez que le deuxième import n'a aucun effet :
>>> import foo # foo.py contient : bar = 'original'
>>> print foo.bar
original
>>> # editer foo.py et changer pour : bar = 'changed'
>>> import foo
>>> print foo.bar
original
J'étais un campeur très heureux quand j'ai découvert reload
:
>>> reload(foo)
>>> print foo.bar
changed
Cependant, il n'y a pas de solution facile lorsque vous importez des éléments d'un module sans importer le module lui-même :
>>> from foo import baz
>>> print baz
original
>>> # changer foo.py de baz = 'original' à baz = 'changed'
>>> from foo import baz
>>> print baz
original
>>> reload(foo)
Traceback (most recent call last):
File "", line 1, in
reload(foo)
NameError: name 'foo' not defined
Pourquoi Python ne met-il pas à jour les éléments importés lorsque vous lui donnez une nouvelle instruction import
?