__pycache__란 무엇인가?
내가 아는 바로는 캐시는 유사한 파일의 암호화된 파일이다.
우리는 어떻게 해야 하는가?__pycache__
폴더? 소스코드 대신 사람들에게 주는 건가?내 입력 데이터뿐인가요?이 폴더는 계속 만들어지는데, 무엇을 위한 겁니까?
로 컴파일 Python에 __pycache__
폴더로 만들다그 안을 들여다보면, 당신은 그 이름을 공유하는 파일들을 발견할 수 있을 것이다..py
프로젝트 폴더에 있는 파일, 확장명만 다음 중 하나임.pyc
또는.pyo
각각 프로그램 파일의 바이트 코드 컴파일 및 최적화된 바이트 코드 컴파일 버전입니다.
프로그래머로서, 당신은 대체로 그것을 무시할 수 있다...단지 당신의 프로그램이 조금 더 빨리 시작되도록 만드는 것뿐이다.스크립트가 변경되면 해당 스크립트가 다시 컴파일되고, 파일 또는 전체 폴더를 삭제하고 프로그램을 다시 실행하면 다시 나타난다(특정적으로 해당 동작을 억제하지 않는 한).
다른 사람들에게 코드를 보낼 때, 일반적인 관행은 그 폴더를 삭제하는 것이지만, 당신이 하든 말든 상관없다.버전 제어를 사용하는 경우(git
(), 이 폴더는 일반적으로 무시 파일에 나열된다(.gitignore
() 따라서 포함되지 않는다.
CPython(기준 구현인 만큼 가장 일반적인 것)을 사용하고 있고 해당 폴더를 원하지 않는 경우, 예를 들어 -B 플래그와 함께 통역기를 시작하여 억제할 수 있다.
python -B foo.py
tcaswell에서 언급한 또 다른 옵션은 환경 변수를 설정하는 것이다.PYTHONDONTWRITEBYTECODE
(Python의 man page에 따르면, "비어 있지 않은 문자열"에 따름).
__pycache__
Python 3 바이트 코드를 컴파일하여 실행할 준비가 된 폴더.
나는 이 파일들을 일상적으로 삭제하거나 개발 중에 생성되는 것을 당신의 시간을 낭비하는 것으로 억제하는 것을 추천하지 않는다.바이트 코드는 에지 케이스(주석 참조)에서 오래될 수 있으므로 필요에 따라 정리할 수 있는 재귀 명령어(아래 참조)만 준비하십시오.
파이톤 프로그래머들은 보통 바이트코드를 무시한다.과연__pycache__
그리고*.pyc
흔히 볼 수 있는 선이다..gitignore
파일. 바이트 코드는 배포를 위한 것이 아니며 모듈을 사용하여 분해할 수 있다.
OS X를 사용하는 경우 프로젝트의 루트 폴더에서 다음 명령을 실행하여 프로젝트의 모든 폴더를 쉽게 숨길 수 있다.
find . -name '__pycache__' -exec chflags hidden {} \;
대체하다__pycache__
와 함께*.pyc
파이톤 2용.
이것은 모든 디렉토리(.pyc 파일)에 Finder/Textmate 2를 목록에서 제외하도록 지시하는 플래그를 설정한다.중요한 것은 바이트코드가 있다는 것이다. 단지 숨겨져 있을 뿐이다.
새 모듈을 만들고 새 바이트 코드를 숨기거나 숨겨진 바이트 코드 파일을 삭제하려면 명령을 다시 실행하십시오.
윈도우즈의 경우 동등한 명령이 테스트되지 않은 배치 스크립트 시작:
dir * /s/b | findstr __pycache__ | attrib +h +s +r
오른쪽 클릭 > 숨김을 사용하여 프로젝트를 숨기는 것과 같은 것...
실행 단위 테스트는 (주석에 더 있음)을 삭제하는 하나의 시나리오 입니다.*.pyc
파일 및__pycache__
폴더는 정말 유용하다.나는 다음 대사를 사용한다.~/.bash_profile
그리고 그냥 달려라.cl
필요할 때 치우는 것.
alias cpy='find . -name "__pycache__" -delete'
alias cpc='find . -name "*.pyc" -delete'
...
alias cl='cpy && cpc && ...'
최근에는 더 많이
# pip install pyclean
pyclean .
A __pycache__
폴더는 다음 줄을 사용할 때 생성됨:
import file_name
또는 작성한 다른 파일에서 정보를 가져오도록 시도하십시오.이렇게 하면 프로그램을 두 번째로 실행할 때 다른 파일을 열 때 속도가 약간 빨라진다.
3.7개 이상의 문서에서 업데이트된 답변:
모듈 로딩 속도를 높이기 위해 Python은 디렉터리에 있는 각 모듈의 컴파일된 버전을 이름으로 캐시한다.
module.version.pyc
여기서 버전은 컴파일된 파일의 형식을 인코딩하며, 일반적으로 Python 버전 번호를 포함한다.를 들어은 , CPython 3.3으로 이다.py은 다음과 같이 캐시될 것이다.__pycache__/spam.cpython-33.pyc
할 수 있도록 이 명명 규칙은 서로 다른 버전의 Python에서 컴파일된 모듈들이 공존할 수 있도록 한다.
출처: https://docs.python.org/3/tutorial/modules.html#compiled-python-files
즉, 이 디렉토리는 Python에 의해 생성되며 프로그램이 더 빨리 실행되도록 하기 위해 존재한다.소스 제어에 전념해서는 안 되며, 로컬 소스 코드와 평화롭게 공존해야 한다.
__pycache__
즉 python에 다..pyc
파일들당신은 왜 "해석된" 언어인 Python이 컴파일된 파일을 가지고 있는지 궁금할 것이다.이 SO 질문은 (그리고 확실히 이 답을 읽을 가치가 있다.)
파이톤 문서들은 정확히 어떻게 작동하는지 그리고 왜 그것이 존재하는지에 대해 더 깊이 연구한다.
- 기존 유지 관리 시스템 때문에 python 3.2에 추가되었다.
.pyc
같은 디렉토리에 있는 파일들은 프로그램이 다른 버전의 파이썬 인터프리터로 실행되었을 때와 같은 다양한 문제를 야기했다.전체 기능 사양은 PEP 3174를 참조하십시오.
공식 Python 튜토리얼 모듈에서
모듈 로딩 속도를 높이기 위해 Python은 에 있는 각 모듈의 컴파일된 버전을 캐시한다.
__pycache__
명의의 디렉토리.module.version.pyc
여기서 버전은 컴파일된 파일의 형식을 인코딩하며, 일반적으로 Python 버전 번호를 포함한다.예를 들어, CPython 릴리즈 3.6에서는 컴파일된 버전의 spam.py은 다음과 같이 캐시될 것이다.__pycache__/spam.cpython-36.pyc
.
Python 문서 프로그래밍 FAQ에서
모듈을 처음 가져올 때(또는 현재 컴파일된 파일이 생성된 이후 소스 파일이 변경된 경우) 컴파일된 코드가 포함된 .pyc 파일을 다음 위치에 생성해야 한다.
__pycache__
다음을 포함하는 디렉토리의 하위 디렉토리.py
파일. The.pyc
file은 다음과 같은 이름으로 시작하는 파일 이름을 가질 것이다..py
파일로 정리하여 로 끝내다..pyc
, 그것을 만든 특정한 파이톤 바이너리에 의존하는 중간 구성요소와 함께.
모듈을 가져올 때
import file_name
Python은 컴파일된 바이트 코드를 다음 위치에 저장함__pycache__
소스를 다시 구문 분석 및 컴파일할 필요 없이 향후 가져오기가 직접 사용할 수 있도록 디렉토리.
파일을 가져올 때만 스크립트 실행에만 해당되지 않는다.
(이전 버전에서는 캐시된 바이트코드를 .py 파일과 동일한 디렉토리를 어지럽히는 .pyc 파일로 저장하는 데 사용되었으나, Python 3에서 시작하여 사물을 보다 깔끔하게 만들기 위해 하위 디렉토리로 이동했다.)
PHINDONDONDONDTWRITYCODE ---> 만약 이것이 비어 있지 않은 문자열로 설정되어 있다면, Python은 소스 모듈 수입에 .pyc 파일을 쓰려고 하지 않을 것이다.이는 -B 옵션을 지정하는 것과 같다.
python 해석기는 *.py 스크립트 파일을 컴파일하고 컴파일 결과를 에 저장한다.__pycache__
전화번호부
프로젝트가 다시 실행될 때, 통역자가 *.py 스크립트가 수정되지 않았다고 식별하면 컴파일 단계를 건너뛰고 이전에 생성된 *.pyc 파일을__pycache__
폴더로 만들다
프로젝트가 복잡할 때는 프로젝트가 실행되기 전에 준비 시간을 단축할 수 있다.프로그램이 너무 작을 경우 다음을 사용하여 무시할 수 있다.python -B abc.py
…과 함께B
옵션의
python 스크립트를 실행하면 바이트 코드가 메모리에 생성되어 프로그램이 종료될 때까지 보관될 수 있다.모듈을 가져오는 경우, 보다 빠른 재사용을 위해 파이썬은 가져올 모듈의 바이트 코드가 캐시되는 캐시 .pyc(Python's 'Compiled') 파일을 생성한다.아이디어는 python 모듈을 다시 가져올 때 재컴파일(한 번 컴파일, 여러 번 실행 정책 )을 방지하여 python 모듈의 로딩 속도를 높이는 것이다.
파일의 이름은 모듈 이름과 동일하다.초기 점 뒤의 부분은 캐시를 생성한 파이썬 구현(CPython일 수 있음)과 그 버전 번호를 차례로 나타낸다.
Python 버전 2.x는 통역사가 코드를 컴파일할 때 .pyc를 가질 것이다.
Python 버전 3.x는 통역사가 코드를 컴파일할 때 __pycache__를 가질 것이다.
alok@alok:~$ ls
module.py module.pyc __pycache__ test.py
alok@alok:~$
3.2 이상에서 Python은 컴파일된 .pyc 바이트 코드 파일을 이름이 지정된 하위 디렉토리에 저장한다.__pycache__
원본 파일이 있는 디렉터리에 파일을 생성한 Python 버전을 식별하는 파일 이름이 있음(예: script.cpython-33.pyc)
참조URL: https://stackoverflow.com/questions/16869024/what-is-pycache
'Programing' 카테고리의 다른 글
vuetify.js v-property의 전체 너비를 얻는 방법 (0) | 2022.03.28 |
---|---|
검색되지 않은 TypeError: 정의되지 않은 속성을 읽을 수 없음('_H' 읽기) (0) | 2022.03.28 |
각도 2에서 RXJS를 사용하여 사용자 지정 이벤트를 관찰하는 방법 (0) | 2022.03.28 |
리액터 라우터 경로 전환과 함께 사용자 지정 구성 요소를 사용하는 방법 (0) | 2022.03.28 |
파이선 2.7 지원 종료? (0) | 2022.03.28 |