2014-12-09 20 views
9

Wiem, że to może brzmieć jak naprawdę głupie pytanie, ale cokolwiek. Zrobiłem mały skrypt w Pythonie i wprowadziłem pewne zmiany w powłoce. Zwykle na komputerze z OS X (działa Python 2.7), po prostu wpisałbym reload(the_module) i przeładowałbym mój moduł, który zawiera zmiany, które zrobiłem. Jednak, kiedy jestem tutaj przeładunku moduł (. Na oknach Pythona v 3.4), to po prostu daje mi to:Przeładuj moduł w Pythonie 3.4

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

A kiedy wpisuję w imp.reload(my_module), to po prostu mówi, że funkcja ta jest przestarzała. Nie wydaje mi się, aby znaleźć nową funkcję (lub jej odpowiednik) w dowolnym miejscu, więc jeśli ktoś może mi pomóc, to byłoby wspaniale! :)

+0

lepiej ukierunkować na dupe jest [to] (https://stackoverflow.com/questions/961162/reloading-module-giving -nameerror-name-reload-is-not-defined). –

Odpowiedz

22

Moduł imp został wycofany w Pythonie 3.4 na rzecz importlib module. Z documentaion dla modułu imp:

Przestarzałe od wersji 3.4: Pakiet imp czeka Wycofanie na rzecz importlib.

więc należy używać funkcji reload stamtąd:

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

Brakuje mi kroku lub czegoś? Nadal nie ma możliwości ponownego załadowania modułu, ale zamknięcia i ponownego otwarcia powłoki poleceń w stylu lat 80-tych. – user3285866

+2

@ user3285866 Uruchom aktualną funkcję 'importlib.reload (MODULE)' –