Was ist der beste Weg, um die __pycache__
Ordner alle zu löschen und .pyc/.pyo
Dateien von einem python3 Projekt. Ich habe mehrere Benutzer vorschlagen, mit Debian gebündelten das pyclean
Skript gesehen, aber das entbindet nicht die Ordner. Ich möchte einen einfachen Weg, um das Projekt zu bereinigen, bevor Sie die Dateien zu meinem DVS schieben.Python3 Projekt entfernen __pycache__ Ordner und Dateien .pyc
Antwort
fand ich die Antwort selbst, wenn ich pyclean als pycclean vertippt:
No command 'pycclean' found, did you mean:
Command 'py3clean' from package 'python3-minimal' (main)
Command 'pyclean' from package 'python-minimal' (main)
pycclean: command not found
Lauf py3clean .
es sehr schön aufgeräumt.
py3clean ist konservativer als @ V.Gamulas Befehl: Es löscht keine .pyc-Dateien, die aus Quelldateien erzeugt wurden, die seither gelöscht wurden. –
Ab Mai/2017, in MacOS/Homebrew, musste ich das Paket pycleaner von pip verwenden, und der Befehl zum Ausführen ist pycleaner. Nur Python 2. –
python3-minimal scheint nur auf Debian verfügbar zu sein (nicht auf RHEL, CentOS, brew, MacOS) – user12345
Sie können es manuell mit dem nächsten Befehl:
find . | grep -E "(__pycache__|\.pyc|\.pyo$)" | xargs rm -rf
Dies entfernt alle * .pyc Dateien und __pycache__ Verzeichnisse rekursiv im aktuellen Verzeichnis.
Kommentare zu kombinieren, verwende einfach diesen Alias in deinem _.bash_profile_ (oder dem entsprechenden Shell-Loader): ** 'alias pyclean = "find. -name \ *. pyc -o -name \ *. pyo -o -name __pycache__ -delete" '** – maxkoryukov
Sie können die Generierung der Datei in einem Entwicklungskontext auch mit PYTHONDONTWRITEBYTECODE env verhindern https://docs.python.org/3/using/cmdline.html#envvar-PYTHONDONTWRITEBYTECODE – amjoconn
Gibt es einen Grund, warum dies nicht wie erwartet auf Mac funktioniert? Es kann die Dateien in Ordnung finden, aber '-delete' scheint nichts zu tun. Insbesondere, wenn ich den "-o" verwende, um mehrere Pfade einzuschließen, löscht "-delete" nichts. Versuchen Sie auch, zuerst "-delete" zu setzen: NICHT! – dwanderson
Setzen Sie diese Funktion in Ihrem .bashrc
Datei:
pyclean() {
find . -regex "\(.*__pycache__.*\|*.py[co]\)" -delete
}
Dann cd
in das Verzeichnis möchten Sie rekursiv sauber und pyclean
eingeben.
Die Top-Antwort sagt:
find . | grep -E "(__pycache__|\.pyc|\.pyo$)" | xargs rm -rf
Dies wäre weniger effizient zu sein scheint, weil es drei Prozesse verwendet. find
nimmt einen regulären Ausdruck, so dass wir nicht über einen separaten Aufruf von grep
benötigen. In ähnlicher Weise hat es -delete
, so dass wir keinen separaten Aufruf von rm müssen - und im Gegensatz zu einem Kommentar hier, es wird Verzeichnisse löschen, solange sie durch die regulären Ausdruck geleert bekommen. Von der xargs
Manpage:
find /tmp -depth -name core -type f -delete
Dateien finden sie genannt Kern in oder unter dem Verzeichnis/tmp und löschen, aber effizienter als im vorherigen Beispiel (weil wir vermeiden die Notwendigkeit fork (2) und exec (2) starten rm und wir brauchen nicht den zusätzlichen xargs Prozess).
Da dies ein Python 3-Projekt, müssen Sie nur __pycache__
Verzeichnisse löschen - alle .pyc
/.pyo
Dateien in ihnen sind.
find . -type d -name __pycache__ -exec rm -r {} \+
oder seiner einfacheren Form,
find . -type d -name __pycache__ -delete
, die für mich nicht aus irgendeinem Grund arbeiten (Dateien wurden gelöscht, aber Verzeichnisse waren nicht), so dass ich die sowohl im Interesse der Vollständigkeit.
Alternativ, wenn Sie diese in einem Verzeichnis tun, die unter Revisionskontrolle ist, können Sie die RCS sagen __pycache__
Ordner rekursiv zu ignorieren. Dann bereinigen Sie im gewünschten Moment alle ignorierten Dateien. Dies wird wahrscheinlich bequemer sein, weil es wahrscheinlich mehr zu bereinigen gibt als nur __pycache__
.
Nein, nicht alle '.pyc' Dateien sind drin. –
Warum nicht einfach rm -rf __pycache__
verwenden? Führen Sie anschließend git add -A
aus, um sie aus Ihrem Repository zu entfernen, und fügen Sie Ihrer Datei .gitignore __pycache__/
hinzu.
Dies ist mein Alias, der sowohl mit Python 2 als auch mit Python 3 funktioniert und alle .pyc .pyo
Dateien sowie __pycache__
Verzeichnisse rekursiv löscht.
alias pyclean='find . -name "*.py[c|o]" -o -name __pycache__ -exec rm -rf {} +'
Es ist üblich, diese Dateien zur Liste der ignorierten Dateien hinzuzufügen, da sie nicht verfolgt werden sollten. – bvidal
Ich habe sie bereits zur Ignorierdatei hinzugefügt, aber sie wurden noch immer nachverfolgt und ich suchte nach einer einfachen Möglichkeit, sie zu entfernen, damit sie leichter aus der Revision entfernt werden können. Was ich unten gefunden habe. – SalientGreen