Ich benutze Python 3.2.2. Wenn ich ein einfaches Programm schreibe, stoße ich auf das Problem.
>>> reload(recommendations)
Traceback (most recent call last):
File "<pyshell#6>", line 1, in <module>
reload(recommendations)
NameError: name 'reload' is not defined
Wie soll ich das machen
python
python-3.x
MindHacks
quelle
quelle
reload
.import recommendations
. Warum hast du gedacht, dass du verwenden musstestreload()
?reload
leider.with open('file', 'r', encoding='utf-8') as f: do_whatever
. Es ist absolut nicht erforderlich, () Module in einfachen Programmen oder wirklich in einem Python-Programm neu zu laden .Antworten:
Sie wollten wahrscheinlich
importlib.reload()
.from importlib import reload
In Python 2.x war dies eine integrierte Funktion , in 3.x jedoch im
importlib
Modul.Beachten Sie, dass die Verwendung
reload()
außerhalb des Dolmetschers im Allgemeinen nicht erforderlich ist. Was haben Sie hier versucht?quelle
imp
ist ein Modul, keine Datei. (Es ist in den Interpreter-Kern integriert und entspricht keiner Datei.) Und ja, um es zu verwendenimp.reload
, müssen Sie es importierenimp
, aber das ist keine große Sache.imp
wo Sie verwendenreload()
, ja. So funktioniert der Namespace. Warum sollten Sie ein Modul außerhalb der interaktiven Eingabeaufforderung überhaupt neu laden?Ein Update zu @Gareth Pattys Antwort.
imp
wurde in Python 3.4 abgeschrieben. Jetzt willst duimportlib.reload()
.from importlib import reload
quelle
Versuchen Sie es
importlib.reload
.from importlib import reload reload(module_name)
quelle
Wie andere gesagt haben, brauchen Sie entweder
importlib.reload(module)
oder zu einem früheren Zeitpunkt, den Sie brauchenfrom importlib import reload
. Sie können das aberfrom importlib import reload
in einer Initialisierungsdatei ausblenden . Stellen Sie sicher, dass diesPYTHONSTARTUP
in Ihrer Shell definiert ist. Zum Beispiel,Möglicherweise ist dies eine sinnvolle Zeile, die Sie hinzufügen können
~/.bash_profile
, wenn Ihre Shell bash ist und je nachdem, wo Sie Ihre Python-Dateien speichern. (Wenn Sie diese Anweisungen befolgen, starten Sie an dieser Stelle ein neues Terminalfenster, damit die Zeile ausgeführt wird.) Anschließend können Sie die Zeile einfügenfrom importlib import reload
in
~/python/startup.py
und es wird automatisch passieren. (Wenn Sie mitmachen, starten Sie an dieser Stelle eine neue Python-Sitzung.) Dies mag etwas komplex aussehen, nur um dieses eine Problem zu lösen, aber es ist eine Sache, die Sie nur einmal und dann für jedes ähnliche Problem tun müssen Nach dem Motto „Ich wünschte, Python würde dies immer tun“ können Sie die Lösung finden~/python/startup.py
und vergessen , sobald Sie sie gefunden haben.quelle