티스토리 뷰
Python에서 __pycache__
디렉토리는 파이썬 인터프리터가 모듈을 임포트할 때 생성하는 특별한 폴더이다. 이 폴더는 다음과 같은 특징을 가지고 있다.
1. __pycache__
의 목적
__pycache__
폴더는 파이썬 스크립트의 컴파일된 버전인 .pyc
파일들을 포함한다. 이 파일들은 바이트 코드 형식으로, 파이썬 인터프리터가 원본 소스 코드보다 빠르게 실행할 수 있다.
주요 기능
- 실행 속도 향상 : 소스 코드를 매번 다시 컴파일할 필요 없이 바이트 코드를 재사용하여 프로그램 시작 시간을 단축
- 코드 격리 : 바이트 코드를 소스 코드와 분리하여 프로젝트 디렉토리 구조를 깔끔하게 유지
2. 작동 방식
파이썬 스크립트를 실행할 때 다음과 같은 과정 실행
- 인터프리터는 먼저
__pycache__
폴더에 해당하는.pyc
파일이 있는지 검사 - 만약
.pyc
파일이 있고 최신 상태라면(소스 코드가 수정되지 않았다면), 파이썬은 원본 스크립트 대신 이 파일을 실행 - 만약
.pyc
파일이 없거나 최신 상태가 아니라면, 파이썬은 소스 코드를 다시 컴파일하고__pycache__
폴더에 새로운.pyc
파일을 생성
.pyc
파일의 이름은 일반적으로 모듈명.cpython-버전.pyc
형식을 따릅니다. 예를 들어 sample.cpython-311.pyc
와 같은 형태이다.
3. 비활성화 방법
Python에서 __pycache__
폴더 생성을 비활성화하는 방법은 다음과 같습니다:
(1). 환경 변수 설정을 통한 비활성화
PYTHONDONTWRITEBYTECODE
환경 변수를 설정하면 Python이 바이트코드 파일(.pyc
)과 __pycache__
디렉토리를 생성하지 않는다.
터미널에서 다음 명령어를 실행하여 현재 세션에서 비활성화할 수 있다.
export PYTHONDONTWRITEBYTECODE=1
이 설정을 영구적으로 적용하려면 쉘 시작 파일(.bashrc
, .bash_profile
등)에 위 명령어를 추가하면 된다.
(2). 명령줄 옵션 사용
Python 스크립트를 실행할 때 -B
옵션을 사용하여 바이트코드 파일 생성을 비활성화할 수 있다.
python -B script.py
(3). VS Code에서 디버깅 시 비활성화
VS Code에서 디버깅할 때 launch.json
파일에 설정을 추가하여 __pycache__
생성을 방지할 수 있다
(4). VS Code에서 __pycache__
숨기기
__pycache__
폴더를 완전히 비활성화하지 않고 VS Code 파일 탐색기에서 숨기기
- VS Code 설정을 열고(Ctrl+, 또는 File > Preferences > Settings)
- 'exclude'를 검색
- 'Files: Exclude'에서 'Add Pattern' 버튼을 클릭하고
**/__pycache__
패턴을 추가
4. 자주 묻는 질문
__pycache__
폴더를 삭제해도 되나요?
네, 이 폴더를 삭제해도 파이썬 스크립트 실행에는 영향을 미치지 않습니다. 다만 다음 실행 시 파이썬이 스크립트를 다시 컴파일해야 하므로 초기 실행이 약간 느려질 수 있습니다.
Git에 __pycache__
를 포함시켜야 하나요?
아니요, 일반적으로 __pycache__
디렉토리는 .gitignore
파일에 추가하여 버전 관리에서 제외하는 것이 좋습니다. 이 파일들은 시스템과 파이썬 버전에 따라 달라질 수 있기 때문입니다
Python 3.2 이전 버전에서는 어떻게 작동하나요?
Python 3.2 이전 버전에서는 __pycache__
디렉토리가 생성되지 않고, .pyc
파일이 소스 코드와 같은 디렉토리에 직접 생성됩니다.
'Coding Study > Python' 카테고리의 다른 글
VScode 에서 Python 가상환경 설정방법 (0) | 2024.11.04 |
---|---|
[Python] if __name__ == "__main__": 이 코드는 뭐야? (0) | 2023.08.08 |
- Total
- Today
- Yesterday
- 무주택세대구성원
- This version of ChromeDriver only supports Chrome version
- 주택청약
- 소스제어
- 옵시디언
- 버전제어
- notebooklm
- 청약통장
- 티스토리챌린지
- 구글시트
- flask
- chrome버전
- 오블완
- Google sheet
- scraping
- Git
- kc인증
- 챗gpt
- Selenium
- IMPORTRANGE
- vscode 구글시트 연동
- 주택청약제도
- Python
- OpenAI
- chromedriver버전오류
- 청약제도
- VSCode
- GitHub
- 고양장항신혼희망타운
- chatGPT
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |