J'essaie de recharger un module que j'ai déjà importé en Python 3. Je sais que vous n'avez besoin d'importer qu'une seule fois et que l'exécution de la import
commande à nouveau ne fera rien.
L'exécution 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?
python
python-3.x
Prix Lonnie
la source
la source
reload
dans un script sont très rares, et ceux qui utilisent ce type d'art sombre ne liront probablement pas ce commentaire. Cependant, si vous développez un module et utilisez une console IPython pour le tester de manière interactive, celareload
peut être utile dans ce flux de travail. Cependant, comme @Evan l'a dit, faites attention aux effets secondaires au moment de l'importation. En général, je dirais d'éviterreload
les modules de quelqu'un d'autre.reload
le vôtre a du sens au moment de la conception.Pour> = Python3.4:
Pour <= Python3.3:
Pour Python2.x:
Utilisez la
reload()
fonction intégrée .la source
la source
importlib
place.Pour développer les réponses précédemment écrites, si vous voulez une solution unique qui fonctionnera sur les versions 2 et 3 de Python, vous pouvez utiliser ce qui suit:
la source
Je recommande d'utiliser l'extrait de code suivant car il fonctionne dans toutes les versions de python (nécessite
six
):la source
Pour la compatibilité python2 et python3, vous pouvez utiliser:
la source
Si vous ne souhaitez pas utiliser de bibliothèques externes, une solution consiste à recréer la méthode de rechargement de python 2 pour python 3 comme ci-dessous. Utilisez ceci en haut du module (suppose python 3.4+).
Le rechargement BTW est très nécessaire si vous utilisez des fichiers python comme fichiers de configuration et que vous souhaitez éviter les redémarrages de l'application .....
la source