잊혀진 Python 환경: 디스크를 빠르게 정리하기
Source: Dev.to
아무도 모니터링하지 않는 조용한 성장
가상 환경은 처음엔 작아 보이지만 금방 늘어납니다:
- 테스트 프로젝트
- 해커톤 레포
- 튜토리얼 클론
- 임시 브랜치
- 닫히지 않은 PoC
현실적인 의존성 관리(프레임워크, 데이터 라이브러리, 툴링)를 고려하면, 각 환경은 수백 MB, 심지어 GB까지 차지할 수 있습니다.
기술 쓰레기가 숨는 곳
.venv/ 뿐만 아니라:
- 캐시된 Poetry 환경
- conda 환경
.tox폴더- 흩어져 있는
__pycache__디렉터리 dist//build/패키징 아티팩트
이러한 항목들은 거의 기본 워크플로우에서 자동으로 정리되지 않기 때문에 조용히 늘어납니다.
4단계 전문 정리 전략
1) 삭제 전 인벤토리 작성
가시성을 먼저, 행동을 나중에.
2) 유형 및 연령별 분류
어제 만든 환경을 삭제하는 것과 180 일 동안 손대지 않은 환경을 삭제하는 것은 다릅니다.
3) 안전한 배치로 정리
먼저 캐시와 아티팩트를 정리하고, 그 다음 오래된 환경을 정리합니다.
4) 유지보수 자동화
자동화하지 않으면 문제가 다시 돌아옵니다.
KillPy를 유지보수 구성 요소로 활용하기 (광고가 아님)
인벤토리를 만든 뒤, 어려운 부분은 도구와 레포 전반에 흩어져 있는 환경을 찾아 연령·크기별로 정렬하는 것입니다. KillPy는 경로를 스캔하고 삭제 전 후보 목록을 보여줄 수 있습니다.
실용적인 예시:
# 사용 요약 보기
killpy stats --path ~
# 오래된 환경 목록
killpy list --older-than 120
# 삭제 없이 정리 시뮬레이션
killpy delete --type cache --dry-run
대부분의 개발자에게는 월 1회 정도 실행하면 로컬 환경을 건강하게 유지할 수 있습니다.
흔히 저지르는 실수
- 인벤토리 없이 바로 삭제.
- 마지막 접근 시간을 확인하지 않고 활성 환경을 삭제.
- 프로젝트가 실행 중일 때 캐시를 정리.
- 잠금 파일을 버전 관리하지 않아 나중에 환경 재구축에 실패.
예방을 위한 모범 사례
프로젝트당 하나의 표준 유지
- 레포 루트에
.venv사용. - 공식 명령어를 문서화.
- 레포 외부에서 임시 환경을 만들지 않음.
의존성 관리 재현성 확보
pyproject.toml을 건강하게 유지.- 의존성이 바뀔 때마다 잠금 파일을 업데이트.
CI/CD 골든 룰
- 환경을 처음부터 빌드.
- 이전 작업의 잔여물을 재사용하지 않음.
- 명시적인 명령어 사용.
견고한 예시:
python -m venv .venv
.venv/bin/python -m pip install -e ".[dev]"
.venv/bin/python -m pytest
15분 월간 플레이북
- 환경 유형별 저장소 크기 검토.
- 캐시와 빌드 아티팩트 삭제.
- 90일 이상 사용되지 않은 환경 검토.
- 잠금 파일로부터 프로젝트가 깨끗하게 재빌드되는지 확인.
이 플레이북을 따르면 유지보수 마찰을 크게 줄일 수 있습니다.
최종 인사이트
Python 가상 환경을 마스터한다는 것은 .venv/를 만드는 것으로 끝나는 것이 아닙니다. 진정한 성숙은 전체 루프를 닫는 것입니다:
- 잘 만들고
- 잘 유지하고
- 잘 정리한다
전문 운영은 바로 이런 모습입니다.
결론
다음에 디스크 공간이 부족해도 먼저 Docker를 탓하지 마세요. Python 환경을 확인해 보세요—이번 달에 작성한 코드보다 버려진 환경에 더 많은 기술 부채가 쌓여 있을 가능성이 높습니다.
오래된 환경이 계속 디스크를 잡아먹는다면 정기적인 인벤토리 + 정리를 일정에 넣으세요; 자동화된 스캔/목록 단계가 필요하면 KillPy를 고려해 볼 수 있습니다.