일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Spring Security
- 자바
- ORM
- 영속성 컨텍스트
- 컨테이너
- 스프링
- vm
- 스프링 시큐리티
- 도커
- Spring
- 스프링 배치
- 배포
- virtualization
- computer science
- 백엔드
- mysql
- Java
- spring boot
- 스프링 부트
- HTTP
- spring cloud
- web server
- 데이터베이스
- CS
- JPA
- Container
- CI/CD
- spring batch
- 웹 서버
- 가상화
- Today
- Total
개발 일기
[Flask] __pycache__ 본문
파이썬으로 개발하다보니 나는 생성한적도 없던 __pycache__라는 폴더가 각 디렉토리마다 각각 다 생기는 것을 확인할 수 있었다.
그래서 이게 뭔가해서 정리하게 됐다.
__pycache__ 폴더란?
__pycache__ 폴더는 파이썬 인터프리터가 바이트코드를 저장하는 디렉토리다. 파이썬은 스크립트 언어로, 코드를 실행할 때 먼저 소스 코드를 바이트코드로 변환한 후, 이 바이트코드를 실행한다. 이 과정에서 변환된 바이트코드를 매번 새로 생성하는 대신, 변환한 결과를 파일로 저장해 두면 이후 실행 시 시간을 절약할 수 있다. 바로 이 바이트코드 파일이 __pycache__ 폴더에 저장된다.
바이트코드 파일의 확장자
__pycache__ 폴더 안에는 .pyc 확장자를 가진 파일들이 들어 있다. 이 .pyc 파일이 바로 컴파일된 파이썬 바이트코드다. 예를 들어, example.py라는 파이썬 파일이 있을 때, 해당 파일이 실행되면 __pycache__ 폴더 안에 example.cpython-38.pyc라는 파일이 생길 수 있다. 여기서 cpython-38은 컴파일러 버전(CPython 3.8)을 나타내는 것이다.
__pycache__의 목적
__pycache__의 주요 목적은 실행 속도를 향상시키는 데 있다. 파이썬 스크립트를 처음 실행할 때는 소스 코드(.py 파일)를 바이트코드로 변환해야 하므로 시간이 걸리지만, 변환된 바이트코드를 __pycache__ 폴더에 저장해 두면 이후에 같은 스크립트를 실행할 때는 소스 코드를 다시 변환하지 않고 바로 바이트코드를 읽어 실행한다. 이로 인해 실행 속도가 빨라질 수 있다.
__pycache__ 폴더의 생성 시기
__pycache__ 폴더는 파이썬 파일이 실행되거나 임포트될 때 자동으로 생성된다. 파이썬 인터프리터는 이 폴더가 이미 있는지 확인하고, 없다면 새로 생성한 뒤 그 안에 바이트코드를 저장한다.
__pycache__ 폴더를 삭제해도 될까?
__pycache__ 폴더를 삭제해도 코드 실행에 문제가 생기지는 않는다. 단, 삭제하면 파이썬은 다음 번에 해당 파일을 실행할 때 다시 바이트코드를 생성하므로, 다시 __pycache__ 폴더가 생긴다. 만약 실행 속도를 조금이라도 향상시키고 싶다면 __pycache__ 폴더를 유지하는 것이 좋다. 하지만 디스크 공간이 매우 제한된 상황이거나, 바이트코드 파일들이 불필요한 경우라면 삭제해도 문제는 없다.
.pyc 파일을 git에 포함해야 할까?
보통 .pyc 파일이나 __pycache__ 폴더는 **버전 관리 시스템(git 등)**에 포함시키지 않는 것이 일반적이다. 이 파일들은 파이썬이 자동으로 생성하고, 각 개발 환경에서 달라질 수 있기 때문에 굳이 소스 코드 저장소에 포함할 필요가 없다. 이를 위해 git 프로젝트에서는 .gitignore 파일에 다음과 같은 내용을 추가하여 __pycache__ 폴더와 .pyc 파일을 무시하는 것이 좋다:
# .gitignore
__pycache__/
*.pyc
정리
- __pycache__는 파이썬이 컴파일한 바이트코드를 저장하는 폴더다.
- 바이트코드를 저장하여 실행 속도를 빠르게 하기 위한 목적으로 자동 생성된다.
- 이 폴더를 삭제해도 문제는 없지만, 실행 속도가 느려질 수 있다.
- 일반적으로 __pycache__는 버전 관리 시스템에 포함하지 않는다.
'Back-End > Flask (Python)' 카테고리의 다른 글
[Flask] Blueprints 블루프린트 (1) | 2024.09.26 |
---|