Какой самый лучший способ очистить все __pycache__
папки и .pyc/.pyo
файлы из проекта Python3. Я видел, как несколько пользователей предлагали pyclean
сценарий в комплекте с Debian, но это не удаляет папки. Я хочу простой способ очистить проект перед загрузкой файлов на DVS.
python
python-3.x
python-3.4
delete-file
SalientGreen
источник
источник
*__pycache__
,*.pyc*
и это не делает различия между файлами и каталогами. Большинство сгенерированныхrm
команд также будут лишними.find
ни ,grep
ни ,rm
и это может быть опасно для любого текущего рабочего каталога , который может содержатьuseful.pycle.json
илиimportant_deployment_setting_about__pycache__.txt
т.д. , которые я бы не исключал на всей пользовательской базе SO. Не говоря уже о том, как (опасноrm -rf
) поврежденxargs
файл с пробелом в имени. Так что я отредактировал это ...grep: parentheses not balanced
Я нашел ответ сам, когда набрал pyclean как pycclean:
Бег
py3clean .
вычистил это очень хорошо.источник
__pycache__
ни папки, ни.pyc
файлы (проверено на Debian)macOS и Linux
find
Реализация BSD на macOS отличается от GNU find - это совместимо как с BSD, так и с GNU find. Начните с полной реализации, используя-name
и-o
для или - Поместите эту функцию в ваш.bashrc
файл:Затем
cd
в каталог, который вы хотите рекурсивно очистить, и введитеpyclean
.GNU только для поиска
Это решение GNU find, only (то есть Linux), но я чувствую, что с регулярным выражением это немного лучше:
Любая платформа, использующая Python 3
В Windows вы, вероятно, даже не имеете
find
. Однако у вас, вероятно, есть Python 3, который, начиная с 3.4, имеет удобныйpathlib
модуль:-B
Флаг говорит Python не писать.pyc
файлы. (См. ТакжеPYTHONDONTWRITEBYTECODE
переменную среды.)Вышеперечисленные нарушения приводят к списку понятий для зацикливания, но при использовании
python -c
стиль является скорее второстепенной задачей. В качестве альтернативы мы могли бы злоупотреблять (например)__import__
:Критика ответа
Верхний ответ говорил:
Это может показаться менее эффективным, потому что использует три процесса.
find
принимает регулярное выражение, поэтому нам не нужен отдельный вызовgrep
. Точно так же он есть-delete
, поэтому нам не нужен отдельный вызовrm
- и вопреки комментарию здесь, он будет удалять непустые каталоги, пока они очищаются благодаря совпадению с регулярным выражением.Со
xargs
страницы руководства :источник
shutil.rmtee
на__pycache__
каталоги , а не опорожнять их первым; Однострочник может быть хорош для простого псевдонима.Path
Хотя я большой поклонник сейчас, поэтому я думаю, что буду использовать эту версию в своем сценарии.Поскольку это проект Python 3, вам нужно только удалить
__pycache__
каталоги - все.pyc
/.pyo
файлы находятся внутри них.или его более простая форма,
который по какой-то причине мне не помог (файлы были удалены, но каталоги не были), поэтому я включаю оба для полноты картины.
В качестве альтернативы, если вы делаете это в каталоге, который находится под контролем ревизии, вы можете указать RCS
__pycache__
рекурсивно игнорировать папки. Затем, в нужный момент, просто очистите все игнорируемые файлы. Это, вероятно, будет более удобным, потому что, вероятно, будет больше, чем просто очистить__pycache__
.источник
.pyc
файлы находятся внутри.Directory not empty
второй вариант здесь?Это мой псевдоним, который работает как с Python 2, так и с Python 3, рекурсивно удаляя все
.pyc .pyo
файлы, а также__pycache__
каталоги.источник
Если вам нужно постоянное решение для хранения файлов кэша Python вне каталогов вашего проекта:
Начиная с Python 3.8, вы можете использовать переменную окружения,
PYTHONPYCACHEPREFIX
чтобы определить каталог кэша для Python.Из документов Python:
пример
Если вы добавите следующую строку
./profile
в Linux:Python не будет создавать надоедливые
__pycache__
каталоги в каталоге вашего проекта, вместо этого он поместит их все под~/.cache/cpython/
источник
Команда, которую я использовал:
find . -type d -name "__pycache__" -exec rm -r {} +
Объясняет:
Сначала находит все
__pycache__
папки в текущем каталоге.Выполните,
rm -r {} +
чтобы удалить каждую папку на шаге выше ({}
указать заполнитель и+
завершить команду)Отредактировано 1:
Я использую Linux, чтобы повторно использовать команду, я добавил строку ниже в
~/.bashrc
файлОтредактировано 2: если вы используете VS Code , вам не нужно удалять
__pycache__
вручную. Вы можете добавить фрагмент ниже вsettings.json
файл. После этого VS Code скроет все__pycache__
папки для васНадеюсь, поможет !!!
источник
Использование PyCharm
Чтобы удалить Python скомпилированные файлы
В
Project Tool Window
, щелкните правой кнопкой мыши проект или каталог, откуда должны быть удалены скомпилированные файлы Python.В контекстном меню выберите
Clean Python compiled files
.Эти
.pyc
файлы , находящиеся в выбранной директории молча удаляется.источник
Из каталога проекта введите следующее:
Удаление всех файлов .pyc
find . -path "*/*.pyc" -delete
Удаление всех файлов .pyo :
find . -path "*/*.pyo" -delete
Наконец, чтобы удалить все __pycache__ , введите:
find . -path "*/__pycache__" -type d -exec rm -r {} ';'
Если вы столкнулись с ошибкой « Отказано в разрешении» , добавьте sudo в начале всех приведенных выше команд.
источник
Большое спасибо за другие ответы, основанные на них, вот что я использовал для
prerm
файла моего пакета Debian :источник
Почему бы просто не использовать
rm -rf __pycache__
? Запуститеgit add -A
впоследствии, чтобы удалить их из вашего хранилища и добавить__pycache__/
в ваш файл .gitignore.источник
Пожалуйста, просто зайдите в свой терминал и введите:
и это будет удалено.
источник