2013-08-15 22 views
23

Ok, z wielu powodów używam s = __import__('parse') najdłużej w Python2, teraz muszę być moim przejściem do Python3 dla niektórych projektów (głównie z powodu SSL).Python3 - reload() nie można wywołać w obiekcie __import__?

Ale nie ma żadnego odpowiednika w Pythonie3, o ile zauważyłem. Jest tylko jedna opcja:

import parse 
parse.reload() #works 

Ale ja naprawdę potrzebuję tej pracy:

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

lub

reload(parse) 

Wszelkie pomysły, jak je zdobyć pracę w Python3?

+1

Mylisz, że znalazłem to -.- 'import imp' &&' imp.reload (parsowanie) '? – Torxed

+2

'from imp import reload' –

+0

Możliwy duplikat [Reloading module daje NameError: name 'reload' nie jest zdefiniowany] (https://stackoverflow.com/questions/961162/reloading-module-giving-nameerror-name-reload- is-not-defined) –

Odpowiedz

49

reload wbudowana funkcja została przeniesiona do modułu importlib w Pythonie 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. 

Jak podkreślił @JPaget w komentarzach reload() funkcja została przeniesiona z imp do modułu importlib w Python 3.4+. Od 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

Od Pythona 3.4, imp jest przestarzałe. Zamiast tego użyj importlib: 'from importlib import reload' – JPaget