가상환경

가상환경

물리 자원을 논리적으로 분리해 독립 실행 공간을 만드는 기술


가상환경이 필요한 이유

  • 버전 충돌 방지
    • A 프로젝트는 Pandas 1.0 버전이 필요하고, B 프로젝트는 Pandas 2.0 버전이 필요할 경우 가상환경이 없으면 한쪽은 실행되지 않는다.
  • 깔끔한 정리
    • 프로젝트마다 필요한 도구만 담을 수 있어 컴퓨터 시스템이 지저분해지지 않는다.
  • 협업 용이
    • 내가 어떤 라이브러리를 썼는지 리스트를 뽑아 다른 사람에게 전달하기 쉽다.

가상환경 구조

가상환경을 만들면 프로젝트 폴더 안에 특정 폴더(venv / .venv)가 생긴다. 이 안에는 다음 파일들이 들어가있다.

구성 요소 역할
Python 인터프리터 해당 환경에서 사용할 파이썬 실행 파일
Lib/site-packages 해당 환경에만 설치된 외부 라이브러리들
Scripts/bin 가상환경을 켜고 끄는 실행 스크립트

자주 사용하는 도구들

  1. venv : 파이썬에 기본으로 내장된 가장 표준적인 도구
  2. Conda : 데이터 사이언스나 머신러닝 분야에서 필수다.

Docker와의 차이점

가상환경을 써도 해결되지 않는 문제점이 있을 수 있다. (가상환경을 맞췄는데도 컴퓨터에 따라 서버가 안되는 경우)

이런 경우 Docker을 사용한다.

OS까지 가두기 : Docker는 파이썬뿐만 아닌 리눈스 커널 수준까지 이미지 안에 가두어 버린다.

구분 파이썬 가상환경 (venv, Conda) 도커 (Docker)
격리 범위 파이썬 라이브러리, 패키지 버전만 격리 운영체제(OS), 라이브러리, 네트워크 설정까지 통째로 격리
의존성 내 컴퓨터의 OS(Windows/Mac)에 의존 OS에 상관없이 컨테이너 내부 OS 환경에서 실행
주요 목적 파이썬 프로젝트 간 버전 충돌 방지 “내 컴퓨터에서 돌아가면 어디서든 돌아가게” 만들기
파일 구성 특정 폴더 내의 라이브러리 파일들 이미지(Image)라는 독립된 실행 파일 뭉치

결론

  • 가볍게 컴퓨터에서 파이썬 코드만 짤 때 : venv, Conda 같은 가상환경
  • 서버에 배포하거나, 팀원 모두가 100% 동일한 환경을 써야 할 때: Docker

Categories:

Updated:

Leave a comment