Ich habe gerade begonnen, Mercurial zu verwenden. Wow, nette Anwendung. Ich habe meine Datenbankdatei aus dem Codeverzeichnis entfernt, aber ich habe mich über die Dateien .pyc
gewundert. Ich habe sie nicht in das ursprüngliche Commit einbezogen. Die Dokumentation über die Datei .hgignore
enthält ein Beispiel zum Ausschließen von *.pyc
, also denke ich, dass ich auf dem richtigen Weg bin.
Ich frage mich, was passiert, wenn ich mich entscheide, zu einer älteren Dateigruppe zurückzukehren. Muss ich dann alle .pyc
-Dateien löschen? Ich habe einige Fragen zu Stack Overflow zu dem Problem gelesen, darunter ein Gentleman, der alte .pyc
-Dateien verwendet hat. Wie sieht das normalerweise aus?
Wie in der Antwort von ms4py erwähnt, sind * .pyc kompilierte Dateien, die im laufenden Betrieb neu generiert werden. Sie möchten diese beim Verteilen eines Projekts nicht berücksichtigen.
Wenn es jedoch Module gibt, die vorher existierten, wenn Sie Änderungen rückgängig machen und * .pyc-Dateien herumliegen, können seltsame Fehler auftreten, da pyc-Dateien ausgeführt werden können, selbst wenn die ursprüngliche Python-Datei nicht mehr existiert . Dies hat mich ein paar Mal in Django gebissen, als ich Apps in einem Projekt hinzufügte und entfernte und Zweige mit git umstellte.
Um Dinge zu bereinigen, können Sie alle kompilierten Dateien in Ihrem Projektverzeichnis löschen, indem Sie den folgenden Shell-Befehl in Ihrem Projektverzeichnis ausführen:
%Vor% Normalerweise sind Sie sicher, weil *.pyc
neu generiert wird, wenn der entsprechende *.py
seinen Inhalt ändert.
Es ist problematisch, wenn Sie eine *.py
-Datei löschen und Sie immer noch daraus in eine andere Datei importieren. In diesem Fall importieren Sie aus der *.pyc
-Datei, falls sie existiert. Dies ist jedoch ein Fehler in Ihrem Code und hängt nicht wirklich mit Ihrem Arbeitsablauf zusammen.
Fazit : Jede bekannte Python-Bibliothek ignoriert ihre *.pyc
-Dateien, einfach machen;)
Für eine allgemeinere Lösung fragen Sie Mercurial selbst nach, welche Dateien ignoriert werden:
%Vor% Sie können die Ausgabe für xargs
consumption sicher machen:
(Das -0
ist wichtig, um Dateien mit Leerzeichen im Namen zu behandeln.) Sie können dies als Hook für die Post-Aktualisierung installieren:
Schließlich kommt Mercurial mit einer Bereinigungserweiterung , die ähnlich vorgeht:
%Vor% löscht sowohl nicht verfolgte als auch ignorierte Dateien. Wenn Sie mit dem Verlust nicht verfolgter Dateien zufrieden sind, ist dieser Befehl wahrscheinlich der einfachste für Sie, insbesondere weil er auch unter Windows funktioniert, wo xargs
möglicherweise schwer zu finden ist.
Sicher, wenn Sie eine .pyc
Datei von einer älteren Version des gleichen Moduls haben, wird Python das verwenden. Viele Male habe ich mich gefragt, warum mein Programm nicht die Änderungen widerspiegelt, die ich gemacht habe, und ich erkannte, dass es daran lag, dass ich alte Pyc-Dateien hatte.
Wenn dies bedeutet, dass .pyc
nicht Ihre aktuelle Version widerspiegelt, dann müssen Sie alle .pyc
Dateien löschen.
Wenn Sie auf Linux sind, können Sie find . -name *.pyc -delete