파이썬 가상환경(venv) 생성 및 패키지 관리 방법

파이썬 가상환경(venv) 생성 및 패키지 관리 방법

💡 핵심 요약

파이썬 가상환경(venv)은 내 컴퓨터에 여러 프로젝트를 만들 때, A프로젝트와 B프로젝트에 깔리는 라이브러리(패키지) 버전들이 서로 꼬이지 않도록 방파제를 쳐주는 독립된 공간입니다.

파이썬 버전 3.3 이상부터는 별도로 프로그램을 설치할 필요 없이 윈도우나 맥에 기본 탑재되어 즉시 사용할 수 있습니다. venv로 깨끗한 방을 만들고, pip로 패키지를 설치하며, requirements.txt로 그 방의 셋팅값을 팀원들에게 똑같이 복제해 주는 과정이 파이썬 개발의 기본 사이클입니다.


1. 개요: 굳이 가상환경을 파야 하나요?

귀찮다고 가상환경(Virtual Environment)을 안 만들면 이런 참사가 벌어집니다. * 프로젝트 A는 requests 2.0 버전이 필요하고, 프로젝트 B는 requests 3.0버전이 필요할 때, 내 컴퓨터 전역(Global) 공간에 패키지를 깔아버리면 둘 중 하나는 무조건 에러가 납니다. * 이를 막기 위해 프로젝트 폴더마다 완전히 분리된 자기만의 파이썬 실행 파일과 라이브러리를 따로 할당해 주는 것이 바로 venv 모듈의 역할입니다.


2. 실전 가이드: venv 생성법 & 끄고 켜기

터미널이나 명령 프롬프트(CMD)를 열고, 본인의 프로젝트 폴더 경로로 진입해 실행합니다.

🛠 가상환경 만들기

# 기본 명령어: python -m venv [폴더이름]
python -m venv .venv

(보통 개발자들은 IDE가 숨김 폴더로 자동 인식하기 쉽도록 가상환경 폴더 이름을 .venv로 명명하는 것을 선호합니다.)

🟢 가상환경 활성화 시키기 (ON)

가상환경을 만들었으면 이제 그 방어막 안으로 들어가야 합니다. 운영체제별로 명령어가 다릅니다.

내 운영체제 터미널 활성화 명령어
Windows (CMD) .venv\Scripts\activate
Windows (PowerShell) .venv\Scripts\Activate.ps1
Mac / Linux source .venv/bin/activate

명령어를 치면 터미널의 타이핑 칸 맨 앞에 (.venv)라는 꼬리표가 붙는데, 이 상태가 가상환경 안으로 들어간 상태입니다!

🔴 가상환경 비활성화/삭제 (OFF)

  • 비활성화: 켜진 터미널에서 그냥 deactivate 라고 타이핑 후 엔터를 치면 원래 시스템 밖으로 빠져나옵니다.
  • 삭제: 가상환경을 날리고 싶다면 아무 명령어 칠 것 없이, 방금 만들어진 .venv 폴더 자체를 휴지통에 넣고 지워버리면 끝입니다.

3. pip로 내 방 꾸미기 (패키지 설치와 관리)

(.venv) 상태에 돌입했다면, 이제 pip를 써서 설치하는 모든 패키지는 내 컴퓨터 시스템을 건드리지 않고 오직 이 가상 폴더 안에만 얌전하게 설치됩니다.

# 단순 설치
pip install requests

# 버전을 딱 정해서 고정 설치하고 싶을 때 (의존성 방어)
pip install requests==2.28.0

# 낡은 패키지 최신 업그레이드
pip install -U requests

# 지우기
pip uninstall requests

# 현재 이 가상방 안에 무슨 패키지가 깔려있는지 목록 보기
pip list

4. 협업의 꽃: requirements.txt 추출과 복제

내가 내 컴퓨터에서 셋팅을 끝내고 코드를 짰다면, 협업하는 팀원이나 다른 서버에 코드를 올릴 때 내가 깔았던 패키지 목록을 똑같이 수동으로 깔게 할 순 없겠죠? 이때 명세서를 뽑아주는 기능입니다.

📝 명세서 추출하기

pip freeze > requirements.txt

이걸 치면 내 프로젝트 안에 requirements.txt 라는 텍스트 메모장 파일이 뚝딱 생성됩니다. 열어보면 그동안 내가 설치한 수십 개의 패키지와 버전 숫자가 깔끔하게 리스트업 되어있습니다.

📦 추출된 명세서로 똑같이 한방에 설치하기 (팀원)

깃허브 등을 통해 코드를 받은 팀원은 가상환경을 켠 뒤 아래 명령줄 한 줄만 복붙해 치면 내 셋팅과 100% 동일한 환경이 구현됩니다.

pip install -r requirements.txt

5. 💡 틈새 정보 및 알쓸신잡

  • venv는 파이썬 버전을 바꿔주지 않습니다: venv는 라이브러리를 분리해 줄 뿐이지, 파이썬 3.9에서 만든 서버를 3.11로 마법처럼 바꿔주진 않습니다. Python 계의 Node.js nvm처럼 파이썬 버전 자체를 여러 개 돌려쓰고 싶다면 pyenv라는 툴을 병행해서 써야 합니다.
  • Conda 환경에서는 가급적 pip 쓰지 않기: 데이터 분석(ML/AI)을 하시는 분들은 venv 대신 보통 아나콘다의 conda 가상환경을 씁니다. 콘다 안에서 pip install을 너무 남발하면 콘다 자체의 의존성 그물이 박살 나서 환경이 깨지는 경우가 허다하므로 조심해야 합니다. 가급적 conda install을 우선 적용하세요.
  • 초고속 설치기 uv의 등장 (트렌드): 2024년 이후 파이썬 생태계에 Rust 언어로 짠 uv라는 패키지 관리자가 혜성처럼 나타났습니다. 기존 pip 설치 속도보다 과장 없이 10~100배 빠른 엄청난 체감을 주므로 트렌디한 개발자라면 한 번 찍어 먹어 보시길 강력 추천합니다.