가상환경
가상환경
물리 자원을 논리적으로 분리해 독립 실행 공간을 만드는 기술
가상환경이 필요한 이유
- 버전 충돌 방지
- A 프로젝트는 Pandas 1.0 버전이 필요하고, B 프로젝트는 Pandas 2.0 버전이 필요할 경우 가상환경이 없으면 한쪽은 실행되지 않는다.
- 깔끔한 정리
- 프로젝트마다 필요한 도구만 담을 수 있어 컴퓨터 시스템이 지저분해지지 않는다.
- 협업 용이
- 내가 어떤 라이브러리를 썼는지 리스트를 뽑아 다른 사람에게 전달하기 쉽다.
가상환경 구조
가상환경을 만들면 프로젝트 폴더 안에 특정 폴더(venv / .venv)가 생긴다. 이 안에는 다음 파일들이 들어가있다.
| 구성 요소 | 역할 |
|---|---|
| Python 인터프리터 | 해당 환경에서 사용할 파이썬 실행 파일 |
| Lib/site-packages | 해당 환경에만 설치된 외부 라이브러리들 |
| Scripts/bin | 가상환경을 켜고 끄는 실행 스크립트 |
자주 사용하는 도구들
- venv : 파이썬에 기본으로 내장된 가장 표준적인 도구
- Conda : 데이터 사이언스나 머신러닝 분야에서 필수다.
Docker와의 차이점
가상환경을 써도 해결되지 않는 문제점이 있을 수 있다. (가상환경을 맞췄는데도 컴퓨터에 따라 서버가 안되는 경우)
이런 경우 Docker을 사용한다.
OS까지 가두기 : Docker는 파이썬뿐만 아닌 리눈스 커널 수준까지 이미지 안에 가두어 버린다.
| 구분 | 파이썬 가상환경 (venv, Conda) | 도커 (Docker) |
|---|---|---|
| 격리 범위 | 파이썬 라이브러리, 패키지 버전만 격리 | 운영체제(OS), 라이브러리, 네트워크 설정까지 통째로 격리 |
| 의존성 | 내 컴퓨터의 OS(Windows/Mac)에 의존 | OS에 상관없이 컨테이너 내부 OS 환경에서 실행 |
| 주요 목적 | 파이썬 프로젝트 간 버전 충돌 방지 | “내 컴퓨터에서 돌아가면 어디서든 돌아가게” 만들기 |
| 파일 구성 | 특정 폴더 내의 라이브러리 파일들 | 이미지(Image)라는 독립된 실행 파일 뭉치 |
결론
- 가볍게 컴퓨터에서 파이썬 코드만 짤 때 : venv, Conda 같은 가상환경
- 서버에 배포하거나, 팀원 모두가 100% 동일한 환경을 써야 할 때: Docker
Leave a comment