conda vs venv vs uv — Python 가상환경, 뭘 써야 할까?

 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 + pipconda (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환경을 사용하고 있습니다. 

.

.

어떤 파이썬 개발 환경이 좋다는 정답은 없고 프로젝트에 맞는 도구를 사용하는게 맞는 듯합니다. 

모든 프로젝트의 패키지를 하나에 파이썬 환경에 모두 설치하는 것을 피하는 것부터 시작해보면 좋을듯합니다. 

본 포스트는 클로드를 사용하여 기본 조사를 한 후, 제 경험을 바탕으로 재구성했습니다. 

관련 글

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다