여러 파이썬 프로젝트를 한 컴퓨터에서 작업하다 보면 의존성 충돌이 생깁니다.
프로젝트 A는 Django 3.x를 쓰는데 프로젝트 B는 Django 5.x가 필요할 수 있습니다.
「가상환경(virtual environment)」은 「프로젝트마다 독립된 패키지 공간을 만들어 충돌을 막는」 기능입니다.
기본 사용법: python -m venv myenv — myenv라는 가상환경 생성.
source myenv/bin/activate(맥/리눅스) 또는 myenv\Scripts\activate(윈도우)로 활성화.
활성화되면 프롬프트 앞에 「(myenv)」 표시가 붙고, 그 안에서 설치하는 모든 패키지는 그 환경에만 머뭅니다.
가상환경 안에서 pip install pandas를 하면 그 가상환경에만 pandas가 설치됩니다.
시스템 전체에는 영향이 없고, 다른 프로젝트의 환경에도 영향이 없습니다.
「프로젝트 폴더 안의 myenv 폴더는 프로젝트의 "전용 약장"」 같은 셈입니다.
비활성화는 deactivate 한 줄.
다시 시스템 기본 파이썬으로 돌아옵니다.
가상환경을 지우려면 그냥 myenv 폴더를 삭제하면 됩니다 — 시스템에는 흔적이 남지 않습니다.
최근에는 venv보다 더 빠르고 강력한 도구들이 등장했습니다.
「poetry」는 의존성 관리·잠금 파일·패키징을 통합한 도구이고, 「uv」(Astral)는 venv보다 10~100배 빠른 패키지 관리자로 빠르게 인기를 모으고 있습니다.
그래도 venv는 표준 라이브러리에 포함된 기본 도구이므로, 모든 파이썬 사용자가 알아 두어야 합니다.
한 줄 요약
가상환경(venv)은 프로젝트마다 독립된 패키지 공간을 만들어 의존성 충돌을 막아 줍니다.
python -m venv myenv → activate → pip install로 사용하며, poetry·uv 같은 후속 도구도 인기입니다.
더 알아볼 것
- conda — 데이터 사이언스용 가상환경
- poetry vs uv vs pip — 도구 비교
- virtualenv와 venv의 관계