Conda가 필요한 이유
Python 프로젝트마다 필요한 라이브러리 버전이 다릅니다. 프로젝트 A는 numpy 1.24, 프로젝트 B는 numpy 2.0을 요구하면 충돌이 발생합니다. Conda는 프로젝트별 독립 환경을 만들어 이 문제를 해결합니다.
pip + venv와의 차이:
| 항목 | pip + venv | Conda |
|---|---|---|
| Python 버전 관리 | 별도 설치 필요 (pyenv 등) | Conda가 직접 관리 |
| 비Python 패키지 | 설치 불가 (시스템 의존) | C 라이브러리, CUDA 등 포함 설치 |
| 의존성 해결 | 설치 순서에 따라 충돌 가능 | SAT solver로 호환성 검증 |
| 용도 | 순수 Python 프로젝트 | 데이터 과학, ML, 과학 계산 |
데이터 과학이나 머신러닝 프로젝트라면 Conda를 권장합니다. 순수 웹 개발이라면 pip + venv로 충분합니다.
Miniconda vs Anaconda
| 항목 | Miniconda | Anaconda |
|---|---|---|
| 크기 | ~80MB | ~4.5GB |
| 포함 패키지 | conda + Python만 | conda + 300개 이상 패키지 |
| 권장 대상 | 필요한 것만 설치하고 싶은 개발자 | 설치 즉시 pandas, numpy 등을 쓰고 싶은 초보자 |
Miniconda를 권장합니다. 필요한 패키지만 설치하므로 디스크 절약이 크고, 환경이 깔끔합니다.
설치 방법
Windows
# 1. Miniconda 설치 파일 다운로드
# https://docs.conda.io/en/latest/miniconda.html 에서 Windows 64-bit 다운로드
# 2. 설치 실행 후 "Add to PATH" 옵션은 체크하지 않음 (권장)
# → 대신 "Anaconda Prompt" 또는 "Miniconda Prompt"를 사용
# 3. 설치 확인 (Anaconda Prompt에서)
conda --version
# conda 24.9.2
python --version
# Python 3.12.7
macOS / Linux
# 1. 설치 스크립트 다운로드 및 실행
# macOS (Apple Silicon)
curl -O https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-arm64.sh
bash Miniconda3-latest-MacOSX-arm64.sh
# macOS (Intel)
curl -O https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-x86_64.sh
bash Miniconda3-latest-MacOSX-x86_64.sh
# Linux
curl -O https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh
# 2. 쉘 재시작 또는 설정 반영
source ~/.bashrc # bash
source ~/.zshrc # zsh
# 3. 설치 확인
conda --version
# conda 24.9.2
설치 중 “Do you wish to update your shell profile to automatically initialize conda?” 질문에 yes를 선택하세요. 터미널을 열 때마다 자동으로 conda가 활성화됩니다.
가상환경 관리
환경 생성
# Python 3.12로 새 환경 생성
conda create -n myproject python=3.12
# Proceed ([y]/n)? y
# 환경 활성화
conda activate myproject
# (myproject) $ ← 프롬프트 앞에 환경 이름 표시
# Python 버전 확인
python --version
# Python 3.12.7
# 환경 비활성화
conda deactivate
-n은 환경 이름입니다. 프로젝트별로 의미 있는 이름을 붙이세요 (예: ml-project, web-api, data-analysis).
환경 목록과 삭제
# 모든 환경 목록
conda env list
# base * /home/user/miniconda3
# myproject /home/user/miniconda3/envs/myproject
# ml-project /home/user/miniconda3/envs/ml-project
# 환경 삭제
conda env remove -n myproject
# 환경 복제 (기존 환경을 기반으로 새 환경 생성)
conda create -n myproject-v2 --clone myproject
환경 내보내기와 재현
팀원이나 서버에서 동일한 환경을 재현할 때 사용합니다.
# 환경을 YAML 파일로 내보내기
conda activate myproject
conda env export > environment.yml
# YAML 파일로 환경 생성 (다른 PC에서)
conda env create -f environment.yml
# 크로스 플랫폼용 (OS 의존 빌드 번호 제외)
conda env export --no-builds > environment.yml
environment.yml 예시:
name: myproject
channels:
- conda-forge
- defaults
dependencies:
- python=3.12
- numpy=2.1
- pandas=2.2
- scikit-learn=1.5
- pip:
- fastapi==0.115.0 # pip 전용 패키지도 포함 가능
- uvicorn==0.32.0
패키지 관리
conda install
# 패키지 설치
conda install numpy pandas matplotlib
# 특정 버전 설치
conda install numpy=2.1
# conda-forge 채널에서 설치 (최신 버전이 더 빠르게 올라옴)
conda install -c conda-forge jupyterlab
# 설치된 패키지 목록
conda list
# Name Version Channel
# numpy 2.1.3 conda-forge
# pandas 2.2.3 conda-forge
# python 3.12.7 conda-forge
# 패키지 검색
conda search pytorch
# 패키지 삭제
conda remove matplotlib
conda-forge 채널
기본 defaults 채널보다 conda-forge가 패키지가 더 많고 업데이트가 빠릅니다. 기본 채널로 설정하면 편합니다.
# conda-forge를 기본 채널로 설정
conda config --add channels conda-forge
conda config --set channel_priority strict
# 설정 확인
conda config --show channels
# channels:
# - conda-forge
# - defaults
conda + pip 혼용
Conda에 없는 패키지는 pip으로 설치할 수 있습니다. 단, 순서가 중요합니다.
# 올바른 순서: conda 먼저 → pip 나중에
conda install numpy pandas scikit-learn # conda로 설치 가능한 것 먼저
pip install some-rare-package # conda에 없는 것만 pip으로
# 잘못된 순서: pip 먼저 설치 후 conda install
# → conda가 pip 설치 패키지를 인식하지 못해 충돌 가능
자주 쓰는 명령어 정리
| 명령어 | 설명 |
|---|---|
conda create -n 이름 python=버전 | 새 환경 생성 |
conda activate 이름 | 환경 활성화 |
conda deactivate | 환경 비활성화 |
conda env list | 환경 목록 |
conda env remove -n 이름 | 환경 삭제 |
conda install 패키지 | 패키지 설치 |
conda list | 설치된 패키지 목록 |
conda update conda | conda 자체 업데이트 |
conda update --all | 환경의 모든 패키지 업데이트 |
conda env export > environment.yml | 환경 내보내기 |
conda env create -f environment.yml | 환경 재현 |
conda clean --all | 캐시/미사용 패키지 정리 (디스크 절약) |
실전 팁
base 환경에 패키지를 설치하지 마세요. base는 conda 자체를 관리하는 환경입니다. 항상 새 환경을 만들어서 작업하세요.
# base 환경 자동 활성화 끄기 (선택 사항)
conda config --set auto_activate_base false
# → 터미널 열 때 (base) 표시가 사라짐
# → 필요할 때 conda activate base로 수동 활성화
환경이 느려졌다면 conda clean으로 캐시를 정리하세요. 수 GB를 회복할 수 있습니다.
# 캐시, 미사용 패키지, tarball 전부 정리
conda clean --all
# Total: 3.2 GB
# Proceed ([y]/n)? y
libmamba solver를 사용하면 의존성 해결 속도가 크게 빨라집니다. Conda 23.10부터 기본 solver로 채택되었지만, 이전 버전이라면 수동 설정하세요.
# solver 확인
conda config --show solver
# solver: libmamba ← 이미 설정되어 있으면 OK