00.02_가상환경 (Virtual Environment)

파이썬 개발 시 가상환경(Virtual Environment)의 개념은 아무리 강조해도 지나치지 않을 정도로 핵심적인 요소입니다. 특히 여러 프로젝트를 동시에 개발하는 현대의 개발 환경에서는 반드시 지켜야 할 “최선의 실무(Best Practice)” 중 하나입니다.

1. 가상환경이란 무엇인가?

가상환경은 말 그대로 “프로젝트별로 격리된(독립된) 파이썬 실행 환경”입니다. 파이썬 라이브러리를 설치하면 기본적으로 시스템 전역(Global) 공간에 설치됩니다. 만약 가상환경 없이 프로젝트 A와 프로젝트 B를 진행한다고 가정해 봅시다.

  • 프로젝트 A는 requests 라이브러리 1.0 버전을 필요로 합니다.
  • 프로젝트 B는 requests 라이브러리 2.0 버전을 필요로 합니다.

이들을 별도의 공간에 나누지 않고 하나의 시스템 전역에 설치하면, 나중에 설치된 버전이 덮어쓰거나 호환성이 깨져서 어느 한 프로젝트는 실행조차 불가능해집니다. 가상환경은 이 문제를 해결하기 위해 이 프로젝트만을 위한 격리된 폴더를 만들어 그 안에 특정 라이브러리 버전을 모아둡니다.

2. 가상환경의 주요 장점

  • 종속성 충돌 방지: 각 프로젝트에 맞는 특정 버전의 패키지를 독립적으로 유지할 수 있습니다.
  • 깔끔한 관리: 불필요하거나 안 쓰이는 패키지들이 시스템을 지저분하게 만드는 것을 막아줍니다.
  • 쉬운 배포: requirements.txt 등으로 해당 환경에 설치된 패키지 목록만 저장하면, 다른 개발자도 단번에 똑같은 환경을 재구성할 수 있습니다.

3. 파이썬 venv 모듈을 이용한 가상환경 구축

최근 파이썬 3 버전에 내장된 가장 표준화된 가상환경 툴은 venv라는 모듈입니다. 추가 설치 없이 즉시 사용할 수 있습니다.

가상환경 생성하기

프로젝트 폴더(작업할 디렉토리)로 터미널을 이동시킨 후 다음 명령어를 실행합니다.

# macOS / Linux
python3 -m venv .venv

# Windows
python -m venv .venv

명령어 실행 후 프로젝트 폴더 내부에 .venv 라는 이름의 디렉토리가 새롭게 생성된 것을 볼 수 있습니다. 이곳이 바로 이 프로젝트만을 위한 파이썬 실행기와 패키지가 저장되는 격리 창고입니다.

(팁: 관례적으로 환경 폴더 이름은 .venv 또는 venv, env 등을 사용합니다.)

가상환경 활성화하기

가상환경 디렉토리를 생성했다고 끝난 것이 아닙니다. 터미널한테 “이제부터는 이 격리된 환경을 사용할 거야”라고 알려주는 과정인 활성화(Activation)가 필요합니다.

# macOS / Linux
source .venv/bin/activate

# Windows (Command Prompt)
.venv\Scripts\activate.bat

# Windows (PowerShell)
.venv\Scripts\Activate.ps1

활성화가 완료되면 터미널 명령줄의 가장 앞단에 (.venv)라는 꼬리표(프롬프트)가 붙게 됩니다. 이는 현재 컴퓨터가 시스템 전역 파이썬 대신 가상환경 내의 파이썬을 바라보고 있다는 확실한 증거입니다.

가상환경 비활성화하기

격리된 작업 공간에서 빠져나와 다시 시스템 전역 환경으로 돌아가고 싶다면 터미널에 다음 명령어를 입력합니다.

deactivate

프롬프트 앞에 붙어있던 (.venv)가 사라지면 정상적으로 비활성화된 것입니다.

4. 라이브러리 설치 및 상태 저장

가상환경을 활성화시킨 (.venv) 상태에서 pip install로 패키지를 설치하면, 내 컴퓨터 전체가 아닌 오직 해당 가상환경 폴더 내부로만 설치됩니다.

  1. 패키지 설치 예시
    pip install requests pandas
    
  2. 현재 패키지 목록 저장(동결) 현재 이 가상환경에 설치된 라이브러리 목록 전체를 파일로 기록합니다. 현업에서 매우 자주 쓰입니다.
    pip freeze > requirements.txt
    
  3. 목록 파일로부터 복원(설치) 동료에게 프로젝트를 공유하거나 서버에 배포할 때, 이 파일 하나만 가지고 가서 똑같이 환경을 복구합니다.
    pip install -r requirements.txt
    
서브목차