Was tun mit Pyc-Dateien, wenn Django oder Python mit Mercurial verwendet wird?

7

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?

    
kd4ttc 06.06.2012, 18:58
quelle

4 Antworten

13

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%     
JeromeParadis 06.06.2012, 20:49
quelle
5

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;)

    
schlamar 06.06.2012 19:31
quelle
3

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:

%Vor%

(Das -0 ist wichtig, um Dateien mit Leerzeichen im Namen zu behandeln.) Sie können dies als Hook für die Post-Aktualisierung installieren:

%Vor%

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.

    
Martin Geisler 07.06.2012 21:50
quelle
0

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

    
dm03514 06.06.2012 19:05
quelle

Tags und Links