Python 가상환경 3대장 venv, conda, uv의 사용법을 비교 정리한 글입니다.
2026. 4. 1. 최초작성
.
.
conda vs venv vs uv — Python 가상환경, 뭘 써야 할까?
Python을 사용하다보면 “가상환경”을 사용해야 한다는 언급을 자주 접하게 됩니다. 처음엔 왜 필요한지도 모르겠고, 굳이 번거롭게 왜 이걸 사용해야 하나 싶지만 생성한 프로젝트가 많아지면 각 프로젝트별로 설치하는 패키지를 따로 관리하는게 편하다는걸 알게됩니다. 가상환경을 사용하여 프로젝트별로 설치하는 패키지를 따로 관리하게 되면 패키지의 버전 문제나 파이썬 버전 문제로 발생하는 문제들이 깔끔하게 해결되므로 지금은 익숙하지 않고 왜 써야 하나 모르겠어도 자꾸 사용해보는게 좋습니다.
.
이번 포스트에서는 대표적인 Python 가상환경 도구 세 가지인 — venv, conda(Miniconda), uv — 의 사용방법을 간단히 정리해보고 세가지를 비교하여 어떤걸 사용해야할지 도움을 드릴려고 합니다.
.
.
가상환경이 왜 필요할까?
.
가상환경을 이해하려면 먼저 이런 상황을 상상해보세요.
.
- 프로젝트 A에서는 numpy 1.24 버전이 필요합니다.
- 프로젝트 B에서는 numpy 2.0 버전이 필요합니다.
- 컴퓨터에 Python을 하나만 설치하면, 위에서 언급한 numpy 버전 둘 중 하나만 쓸 수 있습니다.
.
이 문제를 해결하려면 가상환경을 사용해야 합니다. 가상환경은 프로젝트 별로 독립된 Python 공간을 만들어주기 때문에 프로젝트 별로 다른 버전의 numpy를 설치할 수 있게 해줍니다.
쉽게 설명하면 가상 환경은 각 프로젝트 별로 서랍을 따로 두는 것입니다. 각 서랍(프로젝트별 가상환경)마다 다른 도구(패키지)를 넣어 두고 프로젝트에서 해당 서랍(프로젝트별 가상환경)을 열어서 도구(패키지)를 사용하는 것입니다.
.
.
1. venv — Python에 기본 내장된 가상환경
venv는 Python을 설치하면 바로 사용할 수 있는 가상환경 도구입니다. 별도 설치 없이 바로 사용할 수 있습니다.
Python 3.3 이상이면 이미 포함되어 있습니다.
.
# Python 버전 확인은 다음처럼 합니다.
python –version
.
.
기본 사용법
1단계: 가상환경 만들기
# “myenv”라는 이름의 가상환경을 생성합니다.
python -m venv myenv
.
이 명령어를 실행하면 현재 폴더에 myenv라는 폴더가 생깁니다. 이 폴더 안에 독립된 Python 환경이 들어있습니다.
.
.
2단계: 가상환경 활성화하기
운영체제 별로 가상환경을 활성화하는 방법이 다릅니다.
.
# Linux / macOS
source myenv/bin/activate
.
# Windows (명령 프롬프트)
myenv\Scripts\activate
.
# Windows (PowerShell)
myenv\Scripts\Activate.ps1
.
.
가상환경이 활성화되면 터미널 앞에 가상 환경의 이름인 (myenv)가 표시됩니다.
(myenv) $ _
.
.
3단계: 패키지 설치하기
가상환경이 활성화된 상태에서 패키지를 설치해주면 해당 가상 환경에서만 사용을 할 수 있습니다.
.
pip install numpy pandas matplotlib
.
.
4단계: 가상환경 비활성화하기
파이썬 가상환경을 비활성화하면 터미널 앞에 있던 가상환경 이름이 사라집니다.
deactivate
.
.
pip 명령은 기존과 동일하게 사용할 수 있습니다.
.
conda를 설치하지 않으면 Visual Studio Code에서 venv를 사용하여 가상환경을 생성해줍니다.
.
가상환경 삭제는 가상환경을 비활성화한 상태에서 해당 폴더를 삭제해주면 됩니다.
rm -rf myenv
.
.
장점
- 별도 설치 불필요: Python만 있으면 바로 사용 가능
- 가볍고 단순: 구조가 간단해서 이해하기 쉬움
- 공식 도구: Python 공식 문서에서 권장하는 표준 방식
단점
- Python 버전 관리 불가: 시스템에 설치된 Python 버전만 사용 가능 (예: Python 3.10이 설치되어 있으면 3.12 환경은 만들 수 없음)
- pip 속도가 느림: 패키지 설치 및 의존성 해결이 느린 편
- Python 패키지만 관리: CUDA, FFmpeg 같은 시스템 라이브러리는 별도로 설치해야 함
.
.
2. conda (Miniconda) — 데이터 과학의 표준
Miniconda를 사용하면 가상환경별로 별도의 Python을 설치할 수 있고 CUDA 같은 시스템 라이브러리까지 함께 설치할 수 있습니다.
.
Anaconda와 Miniconda 두가지가 존재합니다.
- Anaconda: conda + 수백 개의 과학 패키지가 미리 설치됨 (용량 약 3GB 이상)
- Miniconda: conda의 핵심 기능만 포함한 경량 버전 (용량 약 200MB)
전 Miniconda를 사용합니다. 왜냐하면 필요한 패키지만 골라서 설치하면 되기 때문에 가볍고 깔끔합니다.
.
설치방법은 운영체제 별로 차이가 있습니다.
.
# Linux
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh
.
# macOS
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-arm64.sh
bash Miniconda3-latest-MacOSX-arm64.sh
.
# Windows: 공식 사이트에서 설치 파일 다운로드
# https://docs.conda.io/en/latest/miniconda.html
.
Miniconda 설치하고 Visual Studio Code와 연동하는 방법은 다음 포스트를 참고하면 좋습니다.
.
Visual Studio Code와 Miniconda를 사용한 Python 개발 환경 만들기( Windows, Ubuntu, WSL2)
https://webnautes00.blogspot.com/2025/12/visual-studio-code-miniconda-python.html
.
.
기본 사용법
1단계: 가상환경 만들기
Python 3.10을 사용하는 가상환경을 생성합니다.
conda create -n myenv python=3.10
.
2단계: 가상환경 활성화하기
가상환경을 활성화합니다.
conda activate myenv
.
3단계: 패키지 설치하기
conda 또는 pip 명령어를 사용하여 패키지를 설치합니다. 보통은 pip를 사용해도 되지만 패키지에 따라서는 간혹 conda를 사용해서 설치해야 문제 없는 경우도 있습니다.
.
# conda 명령어로 설치
conda install numpy pandas matplotlib
.
# pip로도 설치 가능
pip install numpy pandas matplotlib
.
4단계: 가상환경 비활성화하기
가상환경을 비활성화 합니다.
conda deactivate
.
.
conda를 사용하여 PyTorch를 설치할 수 있습니다. 자세한 방법은 다음 포스트를 참고하세요.
.
Windows에 CUDA 사용할 수 있도록 PyTorch 설치하는 방법
https://webnautes00.blogspot.com/2025/12/windows-cuda-pytorch.html
.
Ubuntu에 CUDA 사용할 수 있도록 PyTorch 설치하는 방법
https://webnautes00.blogspot.com/2025/12/ubuntu-cuda-pytorch.html
.
.
장점
- Python 버전 관리 가능: 여러 Python 버전을 자유롭게 전환
- 시스템 라이브러리 관리: CUDA, cuDNN, MKL 등 C/C++ 기반 라이브러리도 conda가 관리
- 의존성 충돌 방지: conda의 solver가 패키지 간 호환성을 검증
- 크로스 플랫폼: Windows, macOS, Linux 모두 동일하게 동작
단점
- 속도가 느림: 의존성 해결(solver)이 무겁고, 패키지 설치가 pip보다 느림
- 별도 설치 필요: Miniconda를 따로 설치해야 함
- conda + pip 혼용 시 주의: conda로 설치한 패키지와 pip으로 설치한 패키지가 충돌할 수 있음
- 디스크 용량 차지: 환경별로 패키지를 독립 저장하므로 용량을 많이 차지함
.
.
오래 사용하다 보면 캐시가 쌓여 용량이 커집니다. 주기적으로 정리해주세요.
conda clean –all
3. uv
세 가지중 가장 최근에 나온 Rust로 작성된 차세대 Python 패키지 매니저입니다. pip보다 10~100배 빠르고, 가상환경 관리까지 한번에 해결합니다. 단지 제가 uv를 사용하지 않는 이유는 아직 Pytorch에서 공식 지원하지 않는듯해서 입니다. PyTroch 공식 홈페이지에 uv를 사용하여 설치하는 방법이 추가되면 변경할 생각입니다.
.
uv는 Ruff(Python 린터)를 만든 Astral 팀에서 개발한 도구입니다. pip, venv, pyenv의 기능을 하나의 도구로 통합하면서, Rust의 성능으로 압도적인 속도를 자랑합니다.
.
운영체제별로 설치방법에 차이가 있습니다.
.
# Linux / macOS
curl -LsSf https://astral.sh/uv/install.sh | sh
.
# Windows (PowerShell)
powershell -ExecutionPolicy ByPass -c “irm https://astral.sh/uv/install.ps1 | iex”
.
# pip으로도 설치 가능
pip install uv
.
.
기본 사용법
uv는 두 가지 방식으로 사용할 수 있습니다.
방식 A: pip 스타일 (기존 방식과 유사)
.
# 가상환경 생성
uv venv
.
# 특정 Python 버전으로 생성
uv venv –python 3.12
.
# 활성화 (기존과 동일)
source .venv/bin/activate # Linux/macOS
.venv\Scripts\activate # Windows
.
# 패키지 설치 (pip 대신 uv pip를 사용합니다.)
uv pip install numpy pandas matplotlib
.
# 패키지 목록 저장
uv pip freeze > requirements.txt
.
# requirements.txt로 일괄 설치
uv pip install -r requirements.txt
.
.
방식 B: 프로젝트 관리 모드 (uv 고유 기능)
uv만의 프로젝트 관리 기능을 사용하면 가상환경 생성과 활성화를 자동으로 처리합니다.
.
# 새 프로젝트 초기화
uv init myproject
cd myproject
.
# 패키지 추가 (가상환경 자동 생성)
uv add numpy pandas matplotlib
.
# 스크립트 실행 (가상환경 자동 활성화)
uv run python main.py
.
# 패키지 제거
uv remove pandas
.
# 환경 동기화 (lock 파일 기반)
uv sync
.
.
이 방식의 핵심은 uv run으로 실행하면 가상환경 활성화를 직접 할 필요가 없다는 점입니다.
.
uv는 pyenv처럼 Python 버전 자체도 설치하고 관리할 수 있습니다.
.
# Python 버전 설치
uv python install 3.11
uv python install 3.12
.
# 설치된 버전 확인
uv python list –only-installed
.
# 특정 버전으로 실행
uv run –python 3.12 python main.py
.
.
장점
- 압도적인 속도: pip 대비 10~100배 빠른 패키지 설치 및 의존성 해결
- 올인원 도구: 가상환경, 패키지 관리, Python 버전 관리를 하나로 통합
- 자동 환경 관리: uv run을 사용하면 가상환경 활성화/비활성화를 신경 쓸 필요 없음
- lock 파일 지원: uv.lock으로 팀원 간 동일한 환경을 보장
- 디스크 효율: 글로벌 캐시로 패키지 중복 저장을 방지
- pip 호환: 기존 pip 명령어에 익숙하다면 uv pip 인터페이스로 쉽게 전환 가능
단점
- 비교적 새로운 도구: 2024년 공개되어 아직 생태계가 성장 중
- CUDA 등 시스템 라이브러리 미지원: conda처럼 CUDA를 자동 설치해주지 않음 (별도 설치 필요)
- conda 채널 미지원: conda-forge 등의 패키지를 직접 설치할 수 없음
- 학습 곡선: 프로젝트 관리 모드(uv init/add/run)는 기존 pip 방식과 다르므로 적응이 필요
.
.
비교 정리
한눈에 비교표
| 항목 | venv + pip | conda (Miniconda) | uv |
| 설치 필요 여부 | ❌ 불필요 (내장) | Miniconda 설치 | uv 설치 |
| 패키지 설치 속도 | 🐢 느림 | 🐢 느림 | 🚀 매우 빠름 |
| Python 버전 관리 | ❌ 불가 | ✅ 가능 | ✅ 가능 |
| 시스템 라이브러리 (CUDA 등) | ❌ 불가 | ✅ 가능 | ❌ 불가 |
| lock 파일 지원 | ❌ 없음 | ⚠️ environment.yml | ✅ uv.lock |
| 디스크 사용량 | 보통 | 많음 | 적음 (글로벌 캐시) |
| 학습 난이도 | ⭐ 쉬움 | ⭐⭐ 보통 | ⭐⭐ 보통 |
| 성숙도 | 🏛️ 매우 안정 | 🏛️ 매우 안정 | 🌱 빠르게 성장 중 |
.
.
어떤 상황에 뭘 쓸까?
venv + pip을 추천하는 경우:
- 추가 설치 없이 바로 시작하고 싶을 때
conda (Miniconda)를 추천하는 경우:
- 딥러닝/머신러닝 프로젝트 (GPU 환경이 필요할 때)
- 여러 Python 버전을 오가며 작업할 때
- 데이터 과학 분야에서 검증된 도구를 쓰고 싶을 때
uv를 추천하는 경우:
- 패키지 설치 속도가 중요한 프로젝트
- 팀 프로젝트에서 환경 재현성이 중요할 때
- 모던한 프로젝트 관리 워크플로우를 원할 때
- CI/CD 파이프라인에서 빠른 환경 구성이 필요할 때
.
.
필자의 선택: Miniconda + pip 조합
저는 꽤 오래동안 Miniconda를 메인으로 사용하고 있습니다. PyTorch 기반 AI/ML 프로젝트를 주로 하다 보니 conda가 CUDA 같은 GPU 관련 라이브러리를 함께 관리해주는 점이 매우 편리했기 때문입니다.
.
PyTorch가 2.5 버전을 끝으로 공식 conda 채널 지원을 중단해서 이후엔 conda 환경 안에서 PyTorch는 pip으로 설치하고 있습니다.
.
앞에서도 언급했지만 제가 사용하는 방식은 아래 포스트에 기록되어 있습니다.
.
Windows에 CUDA 사용할 수 있도록 PyTorch 설치하는 방법
https://webnautes00.blogspot.com/2025/12/windows-cuda-pytorch.html
.
Ubuntu에 CUDA 사용할 수 있도록 PyTorch 설치하는 방법
https://webnautes00.blogspot.com/2025/12/ubuntu-cuda-pytorch.html
.
uv는 속도 면에서 정말 인상적이라 Flask/FastAPI를 사용한 웹 개발에서는 uv를 사용하고 싶지만 CUDA를 사용해야 하는 경우엔 아직 conda환경을 사용하고 있습니다.
.
.
어떤 파이썬 개발 환경이 좋다는 정답은 없고 프로젝트에 맞는 도구를 사용하는게 맞는 듯합니다.
모든 프로젝트의 패키지를 하나에 파이썬 환경에 모두 설치하는 것을 피하는 것부터 시작해보면 좋을듯합니다.
본 포스트는 클로드를 사용하여 기본 조사를 한 후, 제 경험을 바탕으로 재구성했습니다.