2012-12-14 7 views
21

Ich habe seit etwa einem Monat mit Python herumalbern und etwas stört mich. Ich benutze das Python (x, y) Toolkit, das mit der übersichtlichen Spyder IDE geliefert wird. Meine Frage betrifft die UMD (User Module Deleter) von Spyder.Spyder - UMD hat gelöscht: Modul

Ich habe this Grafikmodul im Internet gefunden, das hilft, ein paar einfache Grafikkram in einem Python-Skript zu machen (soweit ich das verstehe).

Es ist nicht wie ich bin stecken, aber wenn ich den Folowing Code ausführen:

import pylab as p 
import graphics as g 

window = g.GraphWin("tryout", 600, 600) 
window.close() 
print p.sqrt(4) 

Die Ausgabe lautet:

>>>runfile(r'C:\some\folders\tryout.py', wdir=r'C:\some\folders') 
>>>UMD has deleted: graphics 
>>>2.0 

Linie 1 ist offensichtlich o.k. und so ist Zeile 3, aber ich bekomme Zeile 2 nicht. Auch das provozierte Fenster blinkt in und aus dem Bildschirm, wie es sollte. Zeile 2 scheint nichts zu schaden, und ich kann die Datei so oft wiederholen, wie ich will, aber ich möchte wissen, woher sie kommt.

AFAIK-UMD zwingt den Interpreter, jedes Mal, wenn ein Skript ausgeführt wird, ein Modul neu zu laden. Bedeutet die angezeigte Nachricht, dass 'it' die Verweise auf das Modul gelöscht hat, weil es nicht mehr verwendet wird, oder ist es etwas anderes? Oder bedeutet es, dass etwas falsch ist, und wird es meinen Code "verletzen", sollte ich später mehr hinzufügen?

Hinweis: erste Frage, also bitte kommentieren Sie den Mist, um mir zu helfen, meine Fragen zu verbessern.

EDIT: Ich versuchte, um die Testlinie print p.sqrt(4) zu verschieben, und fand heraus, dass es egal ist, wo ich es hinstelle. Wenn es die erste Zeile nach der Module zu importieren, ist es immer noch die Meldung raisses vor sqrt (4)

Antwort

43

Kurze Antwort zeigt:

Vielleicht gelöscht ist nicht das beste Wort in der Nachricht, die Sie erwähnen. Es sollte reloaded sein, was UMD wirklich macht und weil es viel weniger verwirrend ist. Ich werde ein Problem dafür in unserem Issue Tracker füllen.

Lange Antwort:

UMD nachlädt Ihr Skript nicht nur, sondern auch alle, die lokalen Module es hängt davon ab. By local Ich meine Module außerhalb Ihrer Python-Installation und über die Sie Schreibberechtigungen haben.

Die Idee ist, dass Sie neben Ihrem Skript vielleicht eine Bibliothek von Hilfsfunktionen entwickelt haben, um damit zu arbeiten. Wahrscheinlich möchten Sie diese Bibliothek auch neu laden, damit Änderungen zur Laufzeit angezeigt werden.

Ich weiß, dass dies nicht der Fall ist, also, wenn Sie diese Nachricht entfernen möchten, können Sie auf:

Werkzeuge>Einstellungen>Console>Erweiterte Einstellungen>User Module Deleter

und deaktivieren Sie die Option

anzeigen re geladene Modulliste

+0

Danke für die Klarstellung ... =) – Kraay89

+0

Nützlich, es druckt eine sehr lange Liste, wenn Mayavi zum Beispiel verwendet wird, da diese "Liste reloaded modules" eher zum Debuggen ist, sollte es nicht deaktiviert werden standardmäßig? – dashesy

+2

Ich glaube nicht, dass es zum Debuggen ist; Es geht vielmehr darum, dem Benutzer mitzuteilen, welche Module vor der nächsten Ausführung neu geladen wurden. In Ihrem Fall, da Sie Mayavi lokal installiert haben, können Sie die Nachricht deaktivieren, indem Sie sie zur Liste der ausgeschlossenen Module hinzufügen. –