Frage

    

Diese Frage bereits eine Antwort hier:

    
            
  •              Wie entladen ich (Reload) ein Python-Modul?                                      18 Antworten                          
  •     
    

Ich möchte Code-Änderungen sofort wirksam werden während der Entwicklung. Wie kann ich Dateien detect geändert und neu laden sie in der laufenden Python (2.7) Anwendung?

Edit:

Nachdem die Seiten von ‚Ivo van der Wijk‘ verknüpft lesen, ich denke, es wäre am besten, die Web-Anwendung neu zu starten, wenn der Code ändert sich - wie Django tut. So ist die eigentliche Frage ist: Wie Dateiänderungen überwachen

War es hilfreich?

Lösung

Diese Frage wurde gefragt ein Zahl von mal

Sie können mit reload (Modul) für diese, aber hüte dich vor bösen Nebenwirkungen. Zum Beispiel wird die bestehende Code auf dem Original-Code basiert, wird es nicht auf magische Weise neue Attribute oder Basisklassen hinzugefügt bekommen.

Andere Tipps

wollte ich den gleichen Effekt für einige meinen Python-Skripte, so dass ich auf ging und machte das Skript SourceChangeMonitor.py. Sie können es mit Anweisungen finden hier . Wenn Sie nur das Skript möchten, hier ist eine direkte Link

Das macht keinen Sinn für die meisten Anwendungen, weil Sie Nebenwirkungen durch die Verwendung reload bekommen. Plus die Zeit, die Sie auf dem Code ausgeben, der erkennt, Änderungen und Reloads alle Module auf verbracht haben könnten nur die Anwendung neu starten. Es ist sehr kompliziert, wenn Sie viele Module oder haben ein Projekt importieren, die viele Untermodule enthält.

In einigen Fällen ist es eine gute Idee, though. Der Django Web-Framework stellt einen Entwicklungsserver (manage.py runserver), die automatisch geändert Module neu geladen. Werfen Sie einen Blick auf die django.utils.autoreload - es alle Python-Dateien für Änderungen prüft die Änderungszeit der Dateien. Wie gesagt, dies nur eine gute Idee, für einige Anwendungen ist. Webanwendungen sind etwas staatenlos und kann daher mit wenig bis gar keine Nebenwirkungen neu geladen werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top