173 votes

Module de rechargement donnant NameError : le nom 'reload' n'est pas défini

J'essaie de recharger un module que j'ai déjà importé dans Python 3. Je sais que vous n'avez besoin d'importer qu'une seule fois et exécuter à nouveau la commande import ne fera rien.

Exécuter reload(foo) donne cette erreur :

Traceback (most recent call last):
    File "(stdin)", line 1, in (module)
    ...
NameError: name 'reload' is not defined

Que signifie l'erreur ?

92voto

kevin Points 1256

Pour >= Python3.4 :

import importlib
importlib.reload(module)

Pour <= Python3.3 :

import imp
imp.reload(module)

Pour Python2.x :

Utilisez la fonction reload() intégrée.

reload(module)

41voto

Joey Wilhelm Points 3738

Pour développer les réponses écrites précédemment, si vous voulez une solution unique qui fonctionnera sur les versions 2 et 3 de Python, vous pouvez utiliser ce qui suit :

try:
    reload  # Python 2.7
except NameError:
    try:
        from importlib import reload  # Python 3.4+
    except ImportError:
        from imp import reload  # Python 3.0 - 3.3

12voto

Alleo Points 178

Je recommande d'utiliser l'extrait suivant car il fonctionne dans toutes les versions de python (nécessite six) :

from six.moves import reload_module
reload_module(module)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X