Python Language Réimporter un module


Exemple

Lors de l'utilisation de l'interpréteur interactif, vous souhaiterez peut-être recharger un module. Cela peut être utile si vous modifiez un module et que vous souhaitez importer la version la plus récente, ou si vous avez appliqué un patch sur un élément d'un module existant et que vous souhaitez annuler vos modifications.

Notez que vous ne pouvez pas import le module à nouveau pour annuler:

import math
math.pi = 3
print(math.pi)    # 3
import math
print(math.pi)    # 3

C'est parce que l'interpréteur enregistre chaque module que vous importez. Et lorsque vous essayez de réimporter un module, l'interprète le voit dans le registre et ne fait rien. Donc, le moyen difficile de réimporter est d'utiliser l' import après avoir supprimé l'élément correspondant du registre:

print(math.pi)    # 3
import sys
if 'math' in sys.modules:  # Is the ``math`` module in the register?
    del sys.modules['math']  # If so, remove it.
import math
print(math.pi)    # 3.141592653589793

Mais il y a plus d'une manière simple et directe.

Python 2


Utilisez la fonction de reload :

Python 2.x 2.3
import math
math.pi = 3
print(math.pi)    # 3
reload(math)
print(math.pi)    # 3.141592653589793

Python 3


La fonction de reload a été déplacée vers importlib :

Python 3.x 3.0
import math
math.pi = 3
print(math.pi)    # 3
from importlib import reload
reload(math)
print(math.pi)    # 3.141592653589793