2013-08-15 15 views
23

Ok così, per una serie di motivi, ho utilizzato s = __import__('parse') per il tempo più lungo in Python2, ora ho bisogno di essere le mie transizioni su Python3 per alcuni progetti (principalmente a causa di SSL).Python3 - reload() non può essere chiamato sull'oggetto __import__?

Ma non c'è alcun equivalente reload() in Python3 per quanto ho individuato. C'è una sola opzione:

import parse 
parse.reload() #works 

Ma io davvero, davvero bisogno di questo per lavorare:

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

o

reload(parse) 

Tutte le idee su come farlo funzionare in python3?

+1

Pensavo di averlo trovato -.- 'import imp' && 'imp.reload (parse)'? – Torxed

+2

'da imp import ricarica' –

+0

Possibile duplicato di [Ricarica modulo che fornisce NameError: nome 'ricarica' non è definito] (https://stackoverflow.com/questions/961162/reloading-module-giving-nameerror-name-reload- is-not-defined) –

risposta

49

La reload funzione incorporata è stato spostato al modulo importlib in 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. 

Come rilevato dalla @JPaget nei commenti reload() funzione è stato spostato da imp al modulo importlib in Python 3.4+. Da what's new in Python 3.4:

The reload() function has been moved from imp to importlib as part of the imp module deprecation

+11

A partire da Python 3.4, imp è deprecato. Utilizzare invece importlib: 'da importlib import reload' – JPaget