2014-12-09 8 views
9

Ich weiß, das klingt wie eine wirklich dumme Frage, aber was auch immer. Ich habe ein kleines Skript in Python erstellt und einige Änderungen in einer Shell vorgenommen. Normalerweise würde ich auf einem OS X-Computer (es läuft Python 2.7) einfach reload(the_module) eingeben und es würde mein Modul neu laden, das die Änderungen enthält, die ich gemacht habe. Allerdings, wenn ich das Modul hier bin neu zu laden (. Auf Windows-Python v 3.4), es einfach gibt mir dies:Reload ein Modul in Python 3.4

>>> reload(instfile) 
Traceback (most recent call last): 
    File "<pyshell#5>", line 1, in <module> 
    reload(instfile) 
NameError: name 'reload' is not defined 

Und dann, wenn ich in imp.reload(my_module) geben, heißt es lediglich, dass die Funktion ist veraltet. Ich kann nicht finden, was die neue Funktion (oder das Äquivalent) irgendwo wäre, also wenn mir jemand helfen könnte, wäre das großartig! :)

+0

Bessere Ziel für Betrogene ist [diese] (https://stackoverflow.com/questions/961162/reloading-module-giving -nameerror-name-reload-ist nicht definiert. –

Antwort

22

Das Modul imp wurde in Python 3.4 zugunsten der importlib module veraltet. Vom documentaion für das imp Modul:

Veraltet seit Version 3.4: Das imp Paket fehlt noch deprecation für importlib.

Also, sollten Sie die reload Funktion von dort werden:

>>> import importlib 
>>> importlib.reload 
<function reload at 0x01BA4030> 
>>> 
+1

Ich vermisse einen Schritt oder was? Trotzdem scheint es keine Möglichkeit zu geben, ein Modul neu zu laden, sondern die Befehlshülle zu schließen und wieder zu öffnen, Stil der 80er Jahre. – user3285866

+2

@ user3285866 Führen Sie die eigentliche Funktion 'importlib.reload (MODULE)' aus –