Developer Tools

Conda 환경 관리: 데이터 과학자를 위한 완벽 가이드

conda 환경, 패키지 관리, 채널, 재현 가능한 워크플로우를 마스터하세요. Python 및 R 프로젝트를 위한 기본 명령어부터 고급 팁까지 다룹니다.

9분 읽기

화면에 코드가 표시된 데이터 과학 작업 환경

Conda는 현대 데이터 과학을 지탱하는 패키지 및 환경 관리자입니다. Python 버전을 관리하거나, GPU 가속 라이브러리를 설치하거나, 팀과 재현 가능한 환경을 공유하는 등 어떤 작업이든 conda가 해결해 줍니다 — pip만 사용할 때 겪는 의존성 문제 없이 말이죠.

왜 pip + venv 대신 conda인가?

pip는 Python 패키지만 설치합니다. 반면 conda는 모든 것을 설치합니다 — Python, R, C 라이브러리, CUDA 툴킷, 시스템 수준 의존성까지. 이는 NumPy, SciPy, PyTorch와 같은 데이터 과학 라이브러리가 pip으로는 항상 올바르게 해결하지 못하는 컴파일된 C/Fortran 코드에 의존하기 때문에 매우 중요합니다.

기능 pip + venv conda
Python 패키지
비Python 의존성 (C, CUDA)
Python 버전 관리 ❌ (pyenv 필요)
환경 격리
의존성 해결기 기본 SAT 솔버
크로스 플랫폼 바이너리 Wheels만 지원 완전 지원

시작하기: Miniconda vs Anaconda

Miniconda는 약 80 MB 용량에 conda와 Python만 제공합니다. 필요한 것만 설치하면 됩니다. Anaconda는 250개 이상의 패키지를 사전 설치한 채로 제공되며(약 3 GB) 편리하지만 대부분의 워크플로우에는 불필요하게 무겁습니다.

대부분의 개발자에게는 Miniconda가 더 나은 선택입니다:

# Miniconda 설치 (Linux/macOS)
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh

# 설치 확인
conda --version

환경 관리 핵심 사항

환경 생성

항상 프로젝트마다 전용 환경을 만드세요. base에는 절대 패키지를 설치하지 마세요:

# 특정 Python 버전으로 생성
conda create -n myproject python=3.11

# 패키지를 미리 설치하여 생성
conda create -n ml-project python=3.11 numpy pandas scikit-learn

# 환경 파일로 생성
conda env create -f environment.yml

활성화 및 전환

conda activate myproject    # 환경 전환
conda deactivate            # base로 돌아가기
conda env list              # 모든 환경 보기

패키지 설치

# 기본 채널에서 설치
conda install numpy pandas matplotlib

# conda-forge에서 설치 (커뮤니티 패키지)
conda install -c conda-forge polars duckdb

# 특정 버전 설치
conda install pytorch=2.2 -c pytorch

# conda에 없는 패키지는 pip으로 설치
pip install some-niche-package

Pro tip: 항상 conda install을 먼저 시도하세요. 어떤 conda 채널에서도 패키지를 찾을 수 없을 때만 pip install을 사용하세요. 두 가지를 혼용하면 주의하지 않을 경우 의존성 충돌이 발생할 수 있습니다.

제거 및 정리

# 패키지 제거
conda remove scipy

# 환경 전체 삭제
conda env remove -n old-project

# 캐시된 패키지 정리 (디스크 공간 확보)
conda clean --all

채널과 우선순위

채널은 conda가 패키지를 다운로드하는 곳입니다. 순서가 중요합니다:

# conda-forge를 최우선 순위로 추가
conda config --add channels conda-forge
conda config --set channel_priority strict

# 현재 채널 확인
conda config --show channels

데이터 과학을 위한 권장 설정:

channels:
  - conda-forge
  - defaults

channel_priority: strict를 설정하면 conda가 항상 conda-forge를 우선시하여 채널 혼용으로 인한 의존성 문제를 방지합니다.

environment.yml을 활용한 재현 가능한 환경

environment.yml 파일은 팀원들과 환경을 공유하는 방법입니다:

name: ml-pipeline
channels:
  - conda-forge
  - pytorch
dependencies:
  - python=3.11
  - numpy=1.26
  - pandas=2.2
  - scikit-learn=1.4
  - pytorch=2.2
  - jupyter
  - pip:
    - wandb
    - some-pip-only-package

내보내기 및 재생성

# 현재 환경 내보내기 (크로스 플랫폼)
conda env export --from-history > environment.yml

# 정확한 버전으로 내보내기 (동일 OS에서만 사용 가능)
conda env export > environment-lock.yml

# 다른 기기에서 재생성
conda env create -f environment.yml

--from-history 플래그는 직접 설치한 패키지만 내보내므로 운영 체제에 관계없이 이식성이 높습니다.

고급 사용자를 위한 팁

libmamba로 conda 속도 높이기

기본 conda 솔버는 느릴 수 있습니다. libmamba로 전환하면 10~50배 빠른 의존성 해결이 가능합니다:

conda install -n base conda-libmamba-solver
conda config --set solver libmamba

conda 23.10+ 버전부터는 libmamba가 기본 솔버이지만, 구버전을 사용 중인지 확인해 보세요.

환경 스태킹

공유 기본 의존성을 위해 환경을 스택처럼 쌓을 수 있습니다:

conda activate base-ml
conda activate --stack experiment-42

이렇게 하면 대용량 패키지를 중복 설치하지 않고도 두 환경의 패키지에 모두 접근할 수 있습니다.

Docker에서 conda 사용

FROM continuumio/miniconda3:latest

COPY environment.yml .
RUN conda env create -f environment.yml && conda clean -afy

SHELL ["conda", "run", "-n", "myenv", "/bin/bash", "-c"]
CMD ["python", "app.py"]

CI/CD에서 conda 사용

# GitHub Actions 예시
- uses: conda-incubator/setup-miniconda@v3
  with:
    environment-file: environment.yml
    python-version: "3.11"
    activate-environment: myproject

흔한 문제와 해결책

1. "Solving environment"이 너무 오래 걸릴 때

libmamba 솔버로 전환하거나(위 참조) 고정할 패키지 버전 수를 줄이세요.

2. conda와 pip을 혼용하면 문제가 생길 때

conda 패키지를 모두 먼저 설치한 후 pip 패키지를 설치하세요. 나중에 conda 패키지를 추가해야 한다면 environment.yml에서 환경을 다시 생성하세요.

3. 환경 용량이 너무 클 때

conda clean --all을 정기적으로 실행하세요. Anaconda 대신 Miniconda를 사용하고 필요한 것만 설치하세요.

4. "Package not found" 오류가 날 때

패키지 검색: conda search package-name. conda-forge 시도: conda install -c conda-forge package-name. Python 전용 패키지라면 pip을 대안으로 사용하세요.

빠른 참조

conda 명령어를 빠르게 찾아보고 싶으신가요? **Conda Cheat Sheet**를 활용하세요 — 카테고리별로 정리된 90개 이상의 명령어와 한 번 클릭으로 복사, 검색, 필터링 기능을 제공합니다.

마치며

conda 환경은 재현 가능한 데이터 과학을 위한 필수 요소입니다. 핵심 실천 사항은 다음과 같습니다:

  1. 프로젝트마다 별도 환경base를 오염시키지 마세요
  2. environment.yml 사용 — 의존성을 버전 관리하세요
  3. conda-forge 우선 — 가장 큰 커뮤니티 채널
  4. --from-history로 내보내기 — 플랫폼 간 이식 가능
  5. libmamba 솔버 사용 — 설치 속도가 획기적으로 빨라짐

이 패턴을 익히면 "제 컴퓨터에서는 되는데요"라는 말은 다시는 듣지 않게 될 것입니다.