web-dev-qa-db-fra.com

Python3 - reload () ne peut pas être appelé sur un objet __import__?

Ok donc pour un certain nombre de raisons, j'utilise s = __import__('parse') depuis le plus longtemps en Python2, maintenant j'ai besoin d'être mes transitions vers Python3 pour certains projets (principalement en raison de SSL).

Mais il n'y a pas reload() équivalent en Python3 pour autant que je l'ai repéré. Il n'y a qu'une seule option:

import parse
parse.reload() #works

Mais j'ai vraiment, vraiment besoin que cela fonctionne:

parse = __import__('parse')
parse.reload()

ou

reload(parse)

Des idées sur la façon de le faire fonctionner en Python3?

34
Torxed

La fonction intégrée reload a été déplacée vers le module importlib dans Python 3.4:

In [18]: from importlib import reload

In [19]: reload?
Reload the module and return it.

The module must have been successfully imported before.

Comme indiqué par @JPaget dans les commentaires reload() la fonction a été déplacée de imp vers importlib module en Python 3.4 + . De quoi de neuf dans Python 3.4 :

La fonction reload() a été déplacée de imp vers importlib dans le cadre de la dépréciation du module imp

68
Ashwini Chaudhary