본문 바로가기

Python 입문

Python 가상환경 venv란? — Java Maven 쓰던 개발자가 이해한 방식

Python 공부 시작하면 제일 먼저 나오는 게 가상환경이에요.

근데 처음엔 "이게 왜 필요하지?" 싶거든요. Java 쓸 때는 그냥 프로젝트 만들고 바로 코딩했는데, Python은 왜 이걸 먼저 해야 하나 싶었어요.

근데 이해하고 나니까 Maven이랑 거의 같은 개념이더라고요. Java/C# 개발자라면 금방 이해할 수 있어요.


가상환경이 뭔지부터

Python은 패키지를 전역으로 설치해요. 설치 안 하면 이런 구조예요:

내 컴퓨터
└── Python 3.11
    └── 패키지 (전역 설치)
        ├── requests 2.28
        └── fastapi 0.95

근데 프로젝트가 여러 개면 문제가 생겨요:

프로젝트 A → requests 2.28 필요
프로젝트 B → requests 2.20 필요 (구버전만 지원)

전역 설치면 둘 중 하나만 설치할 수 있어요. 충돌이 나는 거죠.

가상환경은 프로젝트마다 독립된 패키지 공간을 만들어줘요:

내 컴퓨터
├── 프로젝트 A 가상환경
│   └── requests 2.28
└── 프로젝트 B 가상환경
    └── requests 2.20

Java 개발자 관점에서 보면

Maven이랑 거의 같은 개념이에요.

Java (Maven) Python (venv)
pom.xml requirements.txt
mvn install pip install
.m2 로컬 저장소 가상환경 폴더
프로젝트별 의존성 관리 프로젝트별 패키지 관리

Maven이 pom.xml 로 의존성을 관리하듯, Python은 requirements.txt 로 패키지 목록을 관리해요.


실제로 써보기

① 가상환경 생성

# 프로젝트 폴더에서
python -m venv venv

venv 폴더가 생겨요. 여기에 패키지가 설치될 거예요.

 

② 가상환경 활성화

# Windows
venv\Scripts\activate

# Mac/Linux
source venv/bin/activate

활성화하면 터미널 앞에 (venv) 가 붙어요:

(venv) C:\projects\ai-chatbot>

이 상태에서 설치하는 패키지는 전부 이 가상환경 안에만 들어가요.

 

③ 패키지 설치

pip install fastapi
pip install google-generativeai

 

④ 패키지 목록 저장

pip freeze > requirements.txt

Java의 pom.xml 처럼, 이 파일로 나중에 똑같은 환경을 재현할 수 있어요.

 

⑤ 다른 환경에서 복원

pip install -r requirements.txt

Maven의 mvn install 이랑 같은 역할이에요.

 

⑥ 가상환경 비활성화

deactivate

VS Code에서 가상환경 설정

VS Code 쓰면 가상환경 자동으로 인식해줘요.

1. VS Code에서 프로젝트 폴더 열기
2. Ctrl + Shift + P → "Python: Select Interpreter"
3. venv 폴더 안의 Python 선택

이러면 터미널 열 때마다 자동으로 가상환경 활성화돼요.


.gitignore 설정 필수

venv 폴더는 GitHub에 올리면 안 돼요. 용량도 크고, requirements.txt 로 재현하면 되거든요.

.gitignore 파일에 추가:

venv/
__pycache__/
*.pyc
.env

.env 도 같이 추가해두는 게 좋아요. API 키 같은 민감한 정보 저장할 때 쓰거든요.


정리

처음엔 번거롭게 느껴지는데, 프로젝트 여러 개 관리하다 보면 가상환경 없이는 못 살아요.

Java Maven이랑 개념이 같으니까 금방 익숙해질 거예요. 앞으로 Python 프로젝트 시작할 때 가상환경 만드는 게 습관이 돼야 해요.

 

다음 글은 Python 문법 핵심 정리 — C# 개발자 관점으로 써볼게요!