파이썬 가상환경 venv
프로젝트마다 독립된 파이썬·패키지 공간. 충돌이 사라진다.
11편에서 pip install requests 를 시스템 파이썬에 직접 깔지 말라고 경고했습니다. 이유는 단순 — 프로젝트마다 다른 버전이 필요해서요. A 프로젝트는 requests 2.28, B 프로젝트는 2.31, C 프로젝트는 패치된 포크. 같은 시스템에 한 버전만 깔리면 어느 한쪽이 깨집니다. 회사 신입의 한 주 잡일 1번 사고가 이거. 1편의 Anaconda 경고와 같은 맥락.
해법은 프로젝트마다 독립된 파이썬 환경을 만드는 것. 그게 가상환경(venv). 16편을 마치면 ① python -m venv 생성 ② activate / deactivate ③ pip install 과 requirements.txt ④ VS Code 연동 ⑤ 다른 도구(uv·poetry)와의 관계 — 5가지를 손에 익힙니다.
venv 만들기와 켜기
# 프로젝트 폴더에서
cd ~/projects/myapp
# 1) 가상환경 폴더 .venv 생성 (1초)
python3 -m venv .venv
# 2) 활성화
# 맥/리눅스
source .venv/bin/activate
# 윈도우 PowerShell
.venv\Scripts\Activate.ps1
# 윈도우 cmd
.venv\Scripts\activate.bat
# 프롬프트가 (.venv) 로 시작하면 성공
(.venv) $ which python # /home/user/projects/myapp/.venv/bin/python
(.venv) $ python --version # Python 3.12.x
활성화 상태에서는 python·pip 명령이 이 가상환경 안의 것을 쓰게 PATH 가 바뀝니다. 그래서 깔거나 부르는 모든 게 이 폴더 안에서만 일어나요.
📌 .venv 가 표준 이름
다른 이름(venv·env)도 가능하지만 .venv 가 PEP 8 + 현대 도구 표준. 점 prefix 라 자동으로 숨김 처리되고, .gitignore 에 .venv/ 한 줄로 제외됩니다. 깃에 올리지 마세요 — 환경은 requirements.txt 로만 공유.
pip 설치와 requirements.txt
(.venv) $ pip install requests pandas
(.venv) $ pip list # 깔린 패키지 목록
(.venv) $ pip show requests # 버전·위치 상세
# 현재 상태를 파일로 — 협업·재현용
(.venv) $ pip freeze > requirements.txt
# requirements.txt 내용 예:
# pandas==2.2.2
# requests==2.31.0
# numpy==1.26.4
# 동료가 같은 환경을 만들 때
$ git clone ...
$ cd repo
$ python3 -m venv .venv
$ source .venv/bin/activate
(.venv) $ pip install -r requirements.txt
requirements.txt 가 "이 프로젝트는 이 패키지·버전을 쓴다" 의 단일 진실원입니다. 깃에 커밋해 협업하고, 새 머신에서 한 줄로 재현. 27편 끝에서 본인 첫 프로젝트를 만들 때 가장 먼저 적을 파일.
비활성화 — 일 끝나면 끄기
(.venv) $ deactivate
$ ← 프롬프트가 원래대로, 시스템 파이썬으로 복귀
또는 그냥 터미널을 닫아도 됩니다. 가상환경은 현재 셸 세션에만 유효해요. 새 창을 열면 다시 source 로 활성화 필요.
VS Code 연동과 .env 파일
VS Code 에서 파이썬 파일을 열면 우하단에 인터프리터 선택이 보입니다. 클릭해 .venv/bin/python 을 선택하면 그때부터 그 파일·터미널 모두 가상환경을 자동 활성화. 매번 source 안 해도 됩니다.
# 프로젝트 루트의 .vscode/settings.json
{
"python.defaultInterpreterPath": "${workspaceFolder}/.venv/bin/python",
"python.terminal.activateEnvironment": true
}
이 두 줄을 깃에 같이 커밋하면 동료가 폴더를 열 때 자동으로 .venv 를 인식.
sudo 는 시스템 파이썬에 권한 상승해 깔게 됩니다 — 가상환경을 우회해버려요. (.venv) 프롬프트가 보이면 그냥 pip install 만. 권한 오류가 나면 venv 가 제대로 활성화 안 된 신호니까 source 부터 다시.
uv·poetry — 차세대 도구
2024-2026 년 사이 venv + pip 보다 빠른 도구가 인기를 끌고 있습니다. uv(Rust 로 짠 초고속 패키지 관리, Astral 사) 는 pip 대비 10-100배 빠르고, poetry 는 pyproject.toml 기반 의존성 관리 + 빌드를 합칩니다.
# uv — 빠른 venv + pip 대체
$ uv venv # .venv 생성 (0.1초)
$ uv pip install requests # 같은 인터페이스, 훨씬 빠름
$ uv pip install -r requirements.txt
# poetry — 프로젝트 단위 관리
$ poetry new myapp
$ cd myapp
$ poetry add requests
$ poetry run python myapp.py
입문자는 venv + pip 부터 손에 익힌 뒤 도구를 바꾸세요. venv 가 표준이고 모든 환경에 기본 제공되니까 어디 가서도 동작. uv·poetry 는 학습할 만한 시점이 오면 일주일이면 익혀요.
마무리 — 가상환경은 습관이다
새 프로젝트 시작 = 새 폴더 + python -m venv .venv + activate. 이게 습관이 되면 패키지 충돌·버전 사고가 거의 사라집니다. 한 가상환경에 한 프로젝트 가 권장 — 여러 프로젝트가 한 환경을 공유하지 않게.
다음 미션 — 셸에서: ① 새 폴더에서 venv 만들고 requests 설치 ② requests.get("https://httpbin.org/ip") 가 동작하는 스크립트 ③ pip freeze 로 requirements.txt 만들기.
다음 편 미리보기
17편 — "파이썬 데코레이터": 함수를 감싸는 함수. @functools.lru_cache·@dataclass 같은 데코레이터가 어떻게 동작하는지.
← 15편 "상속·super" · 다음: 17편 "데코레이터"