IT

Python3 프로젝트는 __pycache__ 폴더 및 .pyc 파일을 제거합니다.

lottoking 2020. 7. 11. 09:20
반응형

Python3 프로젝트는 __pycache__ 폴더 및 .pyc 파일을 제거합니다.


python3 프로젝트에서 모든 __pycache__폴더와 .pyc/.pyo파일 을 지우는 가장 좋은 방법은 무엇입니까? 여러 사용자 pyclean가 데비안과 함께 제공되는 펼쳐지는 제안 했지만 폴더를 제거합니다. 파일을 DVS로 푸시하기 전에 프로젝트를 정리하는 간단한 방법을 원합니다.


다음 명령으로 수동으로 수행 할 수 있습니다.

find . | grep -E "(__pycache__|\.pyc|\.pyo$)" | xargs rm -rf

현재 디렉토리에서 모든 * .pyc 파일과 __pycache__ 디렉토리를 재귀 적으로 제거합니다 .


pyclean을 pycclean으로 잘못 입력했을 때 스스로 답을 찾았습니다.

    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

달리는 py3clean .것이 아주 멋지게 정리되었습니다.


macOS 및 Linux

findmacOS 에서의 BSD 구현은 GNU find와. 이것은 BSD와 GNU가 모두 호환됩니다. -name-ofor 또는 - 사용하여 구현을 시작하십시오. 이 함수를 .bashrc파일 에 등록하십시오 .

pyclean () {
    find . -type f -name '*.py[co]' -delete -o -type d -name __pycache__ -delete
}

그런 다음 cd재귀 적으로 정리하려는 디렉토리에 입력하십시오 pyclean.

GNU 찾기 전용

이것은 GNU 찾기, 유일한 (예 : Linux) 솔루션이지만 정규적으로 조금 더 좋다고 생각합니다.

pyclean () {
    find . -regex '^.*\(__pycache__\|\.py[co]\)$' -delete
}

Python 3을 사용하는 모든 플랫폼

Windows의 경우에는 없을 것 find입니다. 그러나 3.4에서 시작하는 편리한 pathlib모듈 이있는 Python 3이있을 수 있습니다 .

python3 -c "import pathlib; [p.unlink() for p in pathlib.Path('.').rglob('*.py[co]')]"
python3 -c "import pathlib; [p.rmdir() for p in pathlib.Path('.').rglob('__pycache__')]"

이 남용은 루핑에 대한 이해력을 사용하지만, 사용할 때 python -c스타일은 차선책입니다. 또는 우리는 (예를 들어) 남용 할 수 있습니다 __import__.

python3 -c "for p in __import__('pathlib').Path('.').rglob('*.py[co]'): p.unlink()"
python3 -c "for p in __import__('pathlib').Path('.').rglob('__pycache__'): p.rmdir()"

답의 비판

가장 많이 사용하는 답변은 다음과 가변합니다.

find . | grep -E "(__pycache__|\.pyc|\.pyo$)" | xargs rm -rf

세 가지 프로세스를 사용하기 때문에 효율성이 높은 것입니다. find정규 사용하는 것이 필요하지 않습니다 grep. 마찬가지로, -delete따라서 별도의 호출이 필요하지 않으며 rm... 주석과 달리 ... 여기서 비어 있지 않은 디렉토리는 정규 표현식 일치 여부 여부로 인해 비워지는 한 삭제 됩니다 .

로부터 xargs매뉴얼 페이지

find /tmp -depth -name core -type f -delete

/ tmp 디렉토리에서 또는 아래에서 코어라는 이름의 파일을 찾아 삭제하지만 이전 예제보다 훨씬입니다 (fork (2)를 사용하여 rm을 시작할 필요가 있기 때문에 xargs 프로세스).


이것은 Python 3 프로젝트 디렉토리 __pycache__에서 만 삭제 입니다. 모든 .pyc/ .pyo파일은 그 안에 있습니다.

find . -type d -name __pycache__ -exec rm -r {} \+

또는 더 간단한 형태,

find . -type d -name __pycache__ -delete

어떤 카드 든 효과가 없습니다. 그래서 나는 완전성을 위해 둘 다 포함 된 것입니다.


또는 개정 제어중인 디렉토리 에서이 작업을 수행하는 경우 RCS에게 __pycache__폴더를 재귀 적으로 지시 할 수 있습니다 . 그런 다음 필요한 순간에 무시 된 모든 파일을 정리하십시오. 아마도 단순한 것보다 정리하는 것이 더 많기 때문에 더 편리 할 것입니다 __pycache__.


이것은 파이썬 2 및 파이썬 3 작동 하여과 모든 함께 .pyc .pyo파일과 __pycache__디렉토리를 재귀 적 으로 제거하는 별칭입니다 .

alias pyclean='find . -name "*.py[co]" -o -name __pycache__ -exec rm -rf {} +'

다른 답변에 감사드립니다.이를 기반으로 데비안 패키지 prerm파일에 현장 것입니다.

#!/bin/sh
set -e

deb_package='package-name'
python_package='package_name'

if which pyclean >/dev/null 2>&1; then
    py3clean -p $deb_package
else
    dpkg -L $deb_package | grep ${python_package}$ | while read file
    do
        find ${file} -type d -name __pycache__ -exec rm -r {} \+
    done
fi

프로젝트 디렉토리에서 Python 캐시 파일을 유지하기위한 존재 인 솔루션 이 필요한 경우 :

Python 3.8 부터 환경 변수 PYTHONPYCACHEPREFIX를 사용하여 Python 용 캐시 디렉터리를 정의 할 수 있습니다 .

Python 문서에서 :

이것이 설정되면 Python은 소스 트리 내의 pycache 디렉토리 대신이 경로의 디렉토리 디렉토리 트리에 .pyc 파일을 작성합니다 . 이는 -X pycache_prefix = PATH 옵션을 지정하는 것과 동일합니다.

./profileLinux에서 다음 행을 추가하는 경우 :

export PYTHONPYCACHEPREFIX="$HOME/.cache/cpython/"

Python은 __pycache__디렉토리 디렉토리에 성가신 디렉토리를 생성하지 않고 대신 모든 디렉토리를~/.cache/cpython/


PyCharm 사용

Python있는 파일을 제거하려는 경우

  1. 에서 Project Tool Window, 파이썬 컴파일 된 파일에서 삭제해야합니다 프로젝트 또는 디렉터리를 마우스 오른쪽 단추로 클릭합니다 .

  2. 상황에 맞는 메뉴에서 선택합니다 Clean Python compiled files.

.pyc디렉토리에있는 파일이 자동으로 삭제됩니다.


왜 그냥 사용하지 rm -rf __pycache__않습니까? git add -A나중에 실행 하여 저장소에서 제거하고 __pycache__/.gitignore에 파일 추가 하십시오.


터미널로 이동하여 다음을 입력하십시오.

$rm __pycache__

제거됩니다.

참고 URL : https://stackoverflow.com/questions/28991015/python3-project-remove-pycache-folders-and-pyc-files

반응형