Apa cara TERBAIK untuk menghapus semua __pycache__
folder dan .pyc/.pyo
file dari proyek python3. Saya telah melihat banyak pengguna menyarankan pyclean
skrip yang dibundel dengan Debian, tetapi ini tidak menghapus folder. Saya ingin cara sederhana untuk membersihkan proyek sebelum mendorong file ke DVS saya.
python
python-3.x
python-3.4
delete-file
SalientGreen
sumber
sumber
*__pycache__
,*.pyc*
dan itu tidak membedakan antara file dan direktori. Sebagian besarrm
perintah yang dihasilkan juga akan berlebihan.find
ataugrep
tidakrm
dan itu bisa berbahaya untuk direktori kerja saat ini yang mungkin berisiuseful.pycle.json
atauimportant_deployment_setting_about__pycache__.txt
lain - lain. Saya tidak akan mengesampingkan seluruh basis pengguna SO. Belum lagi bagaimana (berbahayarm -rf
)xargs
akan rusak oleh file dengan spasi putih dalam nama. Jadi saya mengeditnya ...grep: parentheses not balanced
Saya menemukan jawabannya sendiri ketika saya salah mengetik pyclean sebagai pycclean:
Berjalan
py3clean .
membersihkannya dengan sangat baik.sumber
__pycache__
folder, atau.pyc
file (diuji pada debian)macOS & Linux
find
Implementasi BSD pada macOS berbeda dari GNU find - ini kompatibel dengan BSD dan GNU find. Mulailah dengan implementasi globbing, gunakan-name
dan-o
untuk atau - Letakkan fungsi ini di.bashrc
file Anda :Kemudian
cd
ke direktori yang ingin Anda bersihkan secara rekursif, dan ketikpyclean
.GNU hanya menemukan
Ini adalah solusi GNU find, only (yaitu Linux), tapi saya merasa ini sedikit lebih baik dengan regex:
Platform apa pun, menggunakan Python 3
Di Windows, Anda mungkin tidak memilikinya
find
. Namun, Anda mungkin memiliki Python 3, yang dimulai pada 3.4 memilikipathlib
modul yang mudah digunakan :The
-B
bendera memberitahu Python untuk tidak menulis.pyc
file. (Lihat jugaPYTHONDONTWRITEBYTECODE
variabel lingkungan.)Daftar pelanggaran di atas memahami perulangan, tetapi saat menggunakan
python -c
, gaya agak menjadi perhatian sekunder. Sebagai alternatif, kami dapat menyalahgunakan (misalnya)__import__
:Kritik atas jawaban
Jawaban teratas biasanya mengatakan:
Ini tampaknya kurang efisien karena menggunakan tiga proses.
find
mengambil ekspresi reguler, jadi kami tidak perlu doa terpisahgrep
. Demikian pula, sudah-delete
, jadi kita tidak perlu doa terpisahrm
- dan bertentangan dengan komentar di sini, itu akan menghapus direktori tidak kosong selama mereka dikosongkan berdasarkan pertandingan ekspresi reguler.Dari
xargs
halaman manual:sumber
shutil.rmtee
pada__pycache__
direktori bukan mengosongkan mereka pertama; one-liner mungkin bagus untuk alias yang mudah. Saya penggemar beratPath
saat ini, jadi saya pikir saya akan menggunakan versi itu dalam skrip saya.Karena ini adalah proyek Python 3, Anda hanya perlu menghapus
__pycache__
direktori - semua.pyc
/.pyo
file ada di dalamnya.atau bentuknya yang lebih sederhana,
yang tidak berfungsi untuk saya karena beberapa alasan (file dihapus tetapi direktori tidak), jadi saya menyertakan keduanya demi kelengkapan.
Atau, jika Anda melakukan ini di direktori yang berada di bawah kendali revisi, Anda dapat meminta RCS untuk mengabaikan
__pycache__
folder secara rekursif. Kemudian, pada saat yang diperlukan, cukup bersihkan semua file yang diabaikan. Ini mungkin akan lebih nyaman karena mungkin akan ada lebih banyak untuk dibersihkan daripada sekadar__pycache__
.sumber
.pyc
file ada di dalamnya.Directory not empty
varian kedua di sini?Ini adalah alias saya yang berfungsi baik dengan Python 2 dan Python 3 menghapus semua
.pyc .pyo
file juga__pycache__
direktori secara rekursif.sumber
Jika Anda memerlukan solusi permanen untuk menjaga file cache Python dari direktori proyek Anda:
Dimulai dengan Python 3.8 Anda dapat menggunakan variabel lingkungan
PYTHONPYCACHEPREFIX
untuk menentukan direktori cache untuk Python.Dari dokumen Python:
Contoh
Jika Anda menambahkan baris berikut ke
./profile
Linux Anda:Python tidak akan membuat
__pycache__
direktori yang menjengkelkan di direktori proyek Anda, sebaliknya itu akan menempatkan semuanya~/.cache/cpython/
sumber
Perintah yang saya gunakan:
find . -type d -name "__pycache__" -exec rm -r {} +
Menjelaskan:
Pertama menemukan semua
__pycache__
folder di direktori saat ini.Jalankan
rm -r {} +
untuk menghapus setiap folder pada langkah di atas ({}
menandakan placeholder dan+
mengakhiri perintah)Diedit 1:
Saya menggunakan Linux, untuk menggunakan kembali perintah saya telah menambahkan baris di bawah ini ke
~/.bashrc
fileDiedit 2: Jika Anda menggunakan Kode VS , Anda tidak perlu menghapus
__pycache__
secara manual. Anda dapat menambahkan potongan di bawah ini kesettings.json
file. Setelah itu, VS Code akan menyembunyikan semua__pycache__
folder untuk AndaSemoga bisa membantu !!!
sumber
Menggunakan PyCharm
Untuk menghapus file yang dikompilasi Python
Di
Project Tool Window
, klik kanan proyek atau direktori, tempat file yang dikompilasi Python harus dihapus.Pada menu konteks, pilih
Clean Python compiled files
.The
.pyc
file yang berada di direktori yang dipilih diam-diam dihapus.sumber
Dari direktori proyek ketik yang berikut ini:
Menghapus semua file .pyc
find . -path "*/*.pyc" -delete
Menghapus semua file .pyo :
find . -path "*/*.pyo" -delete
Akhirnya, untuk menghapus semua '__pycache__' , ketik:
find . -path "*/__pycache__" -type d -exec rm -r {} ';'
Jika Anda mengalami kesalahan yang ditolak izin , tambahkan sudo di awal semua perintah di atas.
sumber
Terima kasih banyak atas jawaban lain, berdasarkan pada mereka inilah yang saya gunakan untuk
prerm
file paket Debian saya :sumber
Kenapa tidak pakai saja
rm -rf __pycache__
? Jalankangit add -A
sesudahnya untuk menghapusnya dari repositori Anda dan tambahkan__pycache__/
ke file .gitignore Anda.sumber
Silakan pergi ke terminal Anda lalu ketik:
dan itu akan dihapus.
sumber