파이썬 기초 문법을 익히고 여러 가지 외부 라이브러리(pip)를 설치하다 보면, 어느 순간 패키지끼리 버전이 충돌하거나 이전 프로그램이 작동하지 않는 황당한 경험을 하게 됩니다.

예를 들어 A 프로젝트에서는 옛날 버전의 모듈이 필요하고, B 프로젝트에서는 최신 버전의 모듈이 필요한 상황이 발생할 수 있습니다. 컴퓨터 전체(Global)에 패키지를 막 설치해두면 라이브러리가 꼬여서 결국 파이썬 전체를 지우고 재설치해야 하는 대공사가 벌어지기도 합니다.

저 역시 초보 시절 가상환경 개념을 몰라 온갖 패키지를 시스템에 겹쳐 설치했다가 심각한 버전 충돌을 겪고 컴퓨터 환경을 처음부터 다시 구축했던 쓰라린 경험이 있습니다. 오늘은 파이썬 프로젝트마다 독립적인 방을 만들어주는 '가상환경(venv)'의 개념과 실제 구축·활용법을 알기 쉽게 정리해 드립니다.


1. 가상환경(Virtual Environment)이란 무엇인가?

가상환경은 말 그대로 '하나의 컴퓨터 안에 격리된 별도의 파이썬 환경을 여러 개 만드는 기술'입니다.

쉽게 비유하자면 하나의 아파트(내 컴퓨터) 안에 방(프로젝트)마다 서로 다른 가구를 들여놓는 것과 같습니다.

  • 1번 방(웹 크롤링 프로젝트): 파이썬 3.10 + 아름다운 숲(BeautifulSoup) 4.9 버전

  • 2번 방(데이터 분석 프로젝트): 파이썬 3.11 + 판다스(Pandas) 최신 버전

각각의 방은 완전히 격리되어 있기 때문에 2번 방에서 패키지를 업데이트하거나 지워도 1번 방에 아무런 영향을 주지 않습니다. 이처럼 프로젝트마다 필요한 패키지만 깔끔하게 관리할 수 있도록 도와주는 도구가 바로 가상환경입니다.


2. 파이썬 기본 제공 모듈 venv로 가상환경 만드는 순서

별도의 외부 프로그램을 설치할 필요 없이 파이썬 3버전 이상에 기본 내장되어 있는 venv 모듈을 사용하면 터미널 명령어 몇 줄로 간편하게 가상환경을 만들 수 있습니다.

1단계: 프로젝트 폴더 생성 및 이동

가상환경을 만들고자 하는 폴더를 먼저 생성하고 해당 위치로 이동합니다.

  • 윈도우/맥 터미널: cd C:\MyProjects\PythonApp (본인의 프로젝트 경로)

2단계: 가상환경 생성 명령어 입력

터미널이나 명령 프롬프트에 아래 명령어를 입력합니다. (맨 뒤의 myenv는 가상환경의 이름이며 자유롭게 변경 가능합니다.)

python -m venv myenv (맥/리눅스는 python3 -m venv myenv)

잠시 후 프로젝트 폴더 안에 myenv라는 이름의 새로운 폴더가 생성됩니다. 이 폴더 안에 독립된 파이썬 실행 파일과 패키지 저장소가 들어있게 됩니다.


3. 가상환경 활성화(Activate) 및 비활성화(Deactivate)

가상환경을 만들었다고 해서 바로 적용되는 것은 아닙니다. 해당 '독립된 방'으로 들어가는 활성화(Activate) 작업이 필요합니다.

1) 가상환경 활성화하기

  • 윈도우 (CMD 기준): myenv\Scripts\activate 입력

  • 윈도우 (PowerShell 기준): .\myenv\Scripts\Activate.ps1 입력

  • 맥 / 리눅스: source myenv/bin/activate 입력

정상적으로 활성화되면 터미널 프롬프트 맨 앞에 (myenv) 와 같이 가상환경 이름이 괄호로 표시됩니다. 이제부터 pip install로 설치하는 모든 라이브러리는 내 컴퓨터 전체가 아닌 이 myenv 가상환경 내부에만 안전하게 저장됩니다.

2) 가상환경 비활성화하기

작업이 끝난 후 원래의 컴퓨터 기본 환경으로 돌아오고 싶다면 어디서든 아래 명령어 한 줄을 입력하면 됩니다.

deactivate

프롬프트 앞의 (myenv) 표시가 사라지면서 기본 시스템 환경으로 복귀합니다.


4. 가상환경 패키지 리스트 보관 및 복원 (requirements.txt)

가상환경을 사용하는 가장 큰 이유 중 하나는 협업 및 프로그램 이동의 용이성입니다.

내가 만든 가상환경의 수백 메가바이트(MB)짜리 폴더 자체를 남에게 보낼 필요 없이, 내가 설치한 패키지 목록만 텍스트 파일로 추출해서 전달할 수 있습니다.

1) 설치된 패키지 목록 추출하기

가상환경이 활성화된 상태에서 아래 명령어를 입력하면 현재 설치된 패키지 명단이 텍스트 파일로 저장됩니다.

pip freeze > requirements.txt

2) 텍스트 파일로 한 번에 동일한 환경 구축하기

다른 컴퓨터나 협업 상대방은 이 requirements.txt 파일만 받아서 아래 명령어 한 줄을 입력하면 똑같은 버전의 패키지들을 한꺼번에 자동으로 설치할 수 있습니다.

pip install -r requirements.txt


핵심요약

  • 가상환경(venv)은 프로젝트별로 격리된 파이썬 환경을 만들어 패키지 간 버전 충돌을 완벽히 예방합니다.

  • python -m venv 가상환경이름 명령어로 생성하며, 운영체제별 활성화(activate) 커맨드를 실행하여 진입합니다.

  • pip freeze > requirements.txt를 활용하면 사용 중인 패키지 목록을 깔끔하게 추출하고 다른 환경에 동일하게 복원할 수 있습니다.