티스토리 뷰

Python에서 __pycache__ 디렉토리는 파이썬 인터프리터가 모듈을 임포트할 때 생성하는 특별한 폴더이다. 이 폴더는 다음과 같은 특징을 가지고 있다.

1. __pycache__ 의 목적

__pycache__ 폴더는 파이썬 스크립트의 컴파일된 버전인 .pyc 파일들을 포함한다. 이 파일들은 바이트 코드 형식으로, 파이썬 인터프리터가 원본 소스 코드보다 빠르게 실행할 수 있다.

 

주요 기능

  • 실행 속도 향상 : 소스 코드를 매번 다시 컴파일할 필요 없이 바이트 코드를 재사용하여 프로그램 시작 시간을 단축
  • 코드 격리 : 바이트 코드를 소스 코드와 분리하여 프로젝트 디렉토리 구조를 깔끔하게 유지

2. 작동 방식

파이썬 스크립트를 실행할 때 다음과 같은 과정 실행

  1. 인터프리터는 먼저 __pycache__ 폴더에 해당하는 .pyc 파일이 있는지 검사
  2. 만약 .pyc 파일이 있고 최신 상태라면(소스 코드가 수정되지 않았다면), 파이썬은 원본 스크립트 대신 이 파일을 실행
  3. 만약 .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 파일 탐색기에서 숨기기

  1. VS Code 설정을 열고(Ctrl+, 또는 File > Preferences > Settings)
  2. 'exclude'를 검색
  3. 'Files: Exclude'에서 'Add Pattern' 버튼을 클릭하고 **/__pycache__ 패턴을 추가

4. 자주 묻는 질문

__pycache__ 폴더를 삭제해도 되나요?
네, 이 폴더를 삭제해도 파이썬 스크립트 실행에는 영향을 미치지 않습니다. 다만 다음 실행 시 파이썬이 스크립트를 다시 컴파일해야 하므로 초기 실행이 약간 느려질 수 있습니다.

 

Git에 __pycache__를 포함시켜야 하나요?
아니요, 일반적으로 __pycache__ 디렉토리는 .gitignore 파일에 추가하여 버전 관리에서 제외하는 것이 좋습니다. 이 파일들은 시스템과 파이썬 버전에 따라 달라질 수 있기 때문입니다

 

Python 3.2 이전 버전에서는 어떻게 작동하나요?
Python 3.2 이전 버전에서는 __pycache__ 디렉토리가 생성되지 않고, .pyc 파일이 소스 코드와 같은 디렉토리에 직접 생성됩니다.