Conda 환경 관리: 데이터 과학자를 위한 완벽 가이드
conda 환경, 패키지 관리, 채널, 재현 가능한 워크플로우를 마스터하세요. Python 및 R 프로젝트를 위한 기본 명령어부터 고급 팁까지 다룹니다.
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 환경은 재현 가능한 데이터 과학을 위한 필수 요소입니다. 핵심 실천 사항은 다음과 같습니다:
- 프로젝트마다 별도 환경 —
base를 오염시키지 마세요 - environment.yml 사용 — 의존성을 버전 관리하세요
- conda-forge 우선 — 가장 큰 커뮤니티 채널
--from-history로 내보내기 — 플랫폼 간 이식 가능- libmamba 솔버 사용 — 설치 속도가 획기적으로 빨라짐
이 패턴을 익히면 "제 컴퓨터에서는 되는데요"라는 말은 다시는 듣지 않게 될 것입니다.