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
find
macOS 에서의 BSD 구현은 GNU find와. 이것은 BSD와 GNU가 모두 호환됩니다. -name
및 -o
for 또는 - 를 사용하여 구현을 시작하십시오. 이 함수를 .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 옵션을 지정하는 것과 동일합니다.
예
./profile
Linux에서 다음 행을 추가하는 경우 :
export PYTHONPYCACHEPREFIX="$HOME/.cache/cpython/"
Python은 __pycache__
디렉토리 디렉토리에 성가신 디렉토리를 생성하지 않고 대신 모든 디렉토리를~/.cache/cpython/
PyCharm 사용
Python있는 파일을 제거하려는 경우
에서
Project Tool Window
, 파이썬 컴파일 된 파일에서 삭제해야합니다 프로젝트 또는 디렉터리를 마우스 오른쪽 단추로 클릭합니다 .상황에 맞는 메뉴에서 선택합니다
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
'IT' 카테고리의 다른 글
파일 또는 어셈블리 "System.Net.Http, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a"를로드 할 수 없습니다. (0) | 2020.07.11 |
---|---|
CuDNN 설치를 확인하는 방법? (0) | 2020.07.11 |
c # .net의 기존 배열에 새 항목 추가 (0) | 2020.07.11 |
축, 범례 등이없는 ggplot2 (0) | 2020.07.11 |
react.js에서 상태 변경을 듣는 방법은 무엇입니까? (0) | 2020.07.11 |