본문 바로가기
개발환경

[Tool] conda 사용법 - Anaconda and Miniconda

by ds31x 2025. 3. 2.

1. Conda란?

  • 프로그래밍 언어(특히 Python)의 패키지, 종속성을 관리하기 위한 오픈 소스 패키지 관리 시스템(or Package Manager)과
  • 이들이 설치되어 구성되는 (가상)환경을 관리하는 환경 관리 시스템임.
    • conda = pip + venv
conda는 사용자에게
여러 버전의 패키지와 그 종속성을 설치하고 전환할 수 있는 기능을 제공하며,
가상 환경을 생성하여 프로젝트별로 독립적인 개발 환경 구축이 가능케 해줌.

 

package manager란? https://ds31x.tistory.com/335

 

[Summary] Package Manager

package란 여러 구성요소를 하나로 묶은 것을 가르킨다.os에서는package는 흔히 설치되는 software를 가르키며이들의 경우 여러 의존성이 있을 수 있기 때문에여러 packages가 묶여서 설치되는 경우 일

ds31x.tistory.com


1-1. Conda의 주요 특징:

  • 크로스 플랫폼 지원: Windows, macOS, Linux에서 동일한 명령어로 동작하는 시스템.
  • 가상 환경 관리: 프로젝트별로 독립된 환경을 만들어 의존성 충돌 방지가 가능한 기능.
  • 패키지 관리: 다양한 버전의 소프트웨어 패키지를 설치, 업데이트, 제거할 수 있는 시스템.
  • 채널 시스템: 다양한 소스에서 패키지를 가져올 수 있는 유연한 구조.

2. Conda 설치하기

Conda를 사용하기 위해서는 Anaconda 또는 Miniconda를 설치해야 한다.

사실 mamba 와 같은 다른 호환되는 것들도 있긴 함.

2-1. 설치 옵션:

  • Anaconda:
    • 데이터 과학 작업에 필요한 1,500개 이상의 패키지가 사전 설치된 대규모 배포판.
    • 초보자나 데이터 과학자에게 권장되는 선택지.
  • Miniconda:
    • Conda와 Python, 그리고 몇 가지 필수 패키지만 포함된 최소 설치 버전.
    • 디스크 공간을 절약하고 필요한 패키지만 선택적으로 설치하려는 사용자에게 적합한 옵션.

https://ds31x.blogspot.com/2023/07/env-conda-anaconda-and-miniconda.html?view=classic

 

[Env] conda : Anaconda and Miniconda

Conda는 open-source package and environment management system임. pip처럼 package management system이면서 venv처럼 environment management system임. 참고 ...

ds31x.blogspot.com


2-2. 설치 방법:

  1. 공식 웹사이트에서 운영체제에 맞는 설치 파일 다운로드 필요.
  2. 다운로드한 설치 파일 실행 후 안내에 따라 설치 진행.
  3. 설치 완료 후 터미널/명령 프롬프트에서 conda --version 명령어로 설치 확인 가능.

2024.09.12 - [개발환경] - [Conda] miniconda 설치하기: Windows, macOS, WSL

 

[Conda] miniconda 설치하기: Windows, macOS, WSL

miniconda 설치하기: Windows, macOS, WSLMiniconda는 conda 패키지 관리자의 경량화된 버전.Python 환경을 관리하고 가볍게 시작할 수 있는 가장 좋은 선택 중 하나임. 이 문서에서는Windows에서는 winget,macOS와 W

ds31x.tistory.com


3. 기본 명령어

3-1. 환경 관리

환경 관리는 서로 다른 프로젝트에 대해 독립적인 작업 공간을 만들고 관리하는 과정.

# 환경 생성: 지정된 Python 버전으로 새 환경 생성
conda create -n 환경이름 python=3.9

# 환경 활성화: 생성된 환경으로 전환하여 해당 환경의 패키지 사용 가능
conda activate 환경이름

# 환경 비활성화: 현재 활성화된 환경에서 나와 기본 환경으로 복귀
conda deactivate

# 환경 목록 확인: 시스템에 설치된 모든 Conda 환경 목록 표시
conda env list

# 환경 삭제: 더 이상 필요하지 않은 환경 제거
conda env remove -n 환경이름       # 완전제거는 아님.
conda remove --name 환경이름 --all # 완전 제거임.

# 활성화된 환경 삭제 (먼저 비활성화 필요): 현재 사용 중인 환경은 바로 삭제 불가능
conda deactivate
conda env remove -n 환경이름

3-2. 패키지 관리

패키지 관리는 소프트웨어 라이브러리를 설치, 업데이트, 제거하는 작업.

# 패키지 설치: 지정된 패키지를 현재 환경에 추가
conda install 패키지이름

# 특정 버전 패키지 설치: 패키지의 버전을 지정하여 설치 
conda install 패키지이름=1.2.3 # 메이저 버전 일치 (1.2.3 또는 호환되는 최신 버전) 
conda install 패키지이름==1.2.3 # 정확한 버전 일치 (오직 1.2.3 버전만 설치) 
conda install "패키지이름>=1.2.3" # 1.2.3 이상의 버전 설치 (1.2.3 포함, 그 이상 최신 버전) 
conda install "패키지이름>1.2.3" # 1.2.3 초과 버전 설치 (1.2.3 제외, 그 이상 최신 버전)

# 여러 패키지 동시 설치: 한 번에 여러 패키지를 설치하여 시간 절약
conda install 패키지1 패키지2

# 패키지 업데이트: 이미 설치된 패키지를 최신 버전으로 업그레이드
conda update 패키지이름

# 설치된 패키지 목록 확인: 현재 환경에 설치된 모든 패키지 조회
conda list

# 패키지 제거: 더 이상 필요하지 않은 패키지 제거
conda remove 패키지이름
  • Conda에서는 버전을 지정하여 설치할 때, == (완전일치),>=(이상) 또는 >(초과) 연산자를 사용할 수 있음.
    • 이때 중요한 점은 이러한 ==비교 연산자를 사용할 때는 큰따옴표나 작은따옴표로 감싸야 한다==는 점임.
    • 이는 쉘이 >, < 같은 기호를 리다이렉션 연산자로 해석하지 않도록 하기 위한 처리임.
  • 예를 들어:
    • conda install "numpy>=1.20.0"
      • 1.20.0 버전 이상의 최신 numpy 설치
    • conda install "pandas>1.0.0"
      • 1.0.0 버전보다 높은 최신 pandas 설치
  • 이 외에도 버전 지정에 다음과 같은 표현식을 사용할 수 있음:
    • <= (이하): 지정된 버전 이하의 최신 버전
    • < (미만): 지정된 버전 미만의 최신 버전
    • 패키지이름>=1.0,<2.0: 버전 범위 지정 (1.0 이상 2.0 미만)

2024.09.19 - [Python] - [Etc] SW Version: Semantic Versioning + package.version

 

[Etc] SW Version: Semantic Versioning + package.version

Semantic Versioning SystemSemantic Versioning (SemVer) 시스템에 따라,소프트웨어에서 major와 minor, patch (or micro) 버전을 구분하여 버전을 매김.이는 버전 번호를 MAJOR.MINOR.PATCH 형식으로 표현.MAJOR 버전:이전 버

ds31x.tistory.com


3-3. Conda 자체 관리

Conda 자체를 최신 상태로 유지하고 모든 패키지를 관리하는 작업.

# Conda 업데이트: Conda 자체를 최신 버전으로 업그레이드
conda update conda

# 모든 패키지 업데이트: 현재 환경의 모든 패키지를 최신 버전으로 업데이트
conda update --all
  • 보통은 -n base 로 기본환경에서의 conda를 업데이트.

4. 채널 사용하기

채널은 Conda가 패키지를 다운로드하는 원격 저장소로, 다양한 소스에서 패키지를 제공받을 수 있도로 해 줌.

 

4-1. 채널 확인하기

# 현재 구성된 채널 목록 확인: 설정된 모든 채널과 우선순위 표시
conda config --show channels

4-2. 채널 추가 및 우선순위 설정

# 채널 추가: 새로운 패키지 소스 추가
conda config --add channels conda-forge

# 채널 우선순위 설정 (가장 높은 우선순위로 추가): 특정 채널을 최우선으로 검색하도록 설정
conda config --prepend channels bioconda

4-3. 기본 채널 변경하기

# .condarc 파일 편집: 기본 채널 설정 변경
conda config --set default_channels 채널URL

# 예시: conda-forge를 기본 채널로 설정하는 방법
conda config --set default_channels conda-forge

4-4. 특정 채널에서 패키지 설치

# 특정 채널에서 패키지 설치: 지정된 채널에서만 패키지 검색 및 설치
conda install -c conda-forge 패키지이름

5. 환경 파일로 관리하기

환경 파일을 사용하면 환경 설정을 공유하고 재현할 수 있는 방법.

# 모든 패키지를 포함하여 현재 환경 내보내기: 정확한 버전과 빌드 정보를 포함한 전체 환경 설정 저장
conda env export > environment.yml

# 내가 직접 설치한 패키지만 내보내기: 사용자가 명시적으로 설치한 패키지만 포함한 간결한 환경 파일 생성
conda env export --from-history > environment.yml

# 플랫폼 독립적인 환경 파일 생성: 서로 다른 운영체제 간에 공유 가능한 호환성 높은 환경 파일 생성
conda env export --from-history --no-builds > environment.yml

# 환경 파일로 환경 생성: 저장된 환경 설정으로 동일한 환경 재현
conda env create -f environment.yml

# 기존 환경 업데이트: 환경 파일을 기준으로 기존 환경 갱신 및 불필요한 패키지 제거
conda env update -f environment.yml --prune

6. 유용한 팁과 모범 사례

Conda를 효율적으로 사용하기 위한 권장 사항과 전문가들의 조언.

  • 프로젝트별 독립 환경: 각 프로젝트마다 별도의 환경을 생성하여 의존성 충돌 방지가 중요한 관행.
  • 환경 이름 규칙: 목적이나 프로젝트를 나타내는 명확한 환경 이름 사용이 바람직한 방식.
  • 환경 파일 버전 관리: environment.yml 파일을 프로젝트의 버전 관리 시스템에 포함하는 실용적인 접근법.
  • 최소한의 패키지만 설치: 필요한 패키지만 설치하여 환경을 가볍게 유지하는 효율적인 전략.
  • --from-history 활용: 환경 공유 시 플랫폼 간 호환성을 높이기 위한 유용한 옵션.
  • 생성 시 패키지 지정: 환경 생성 시 필요한 패키지를 함께 설치하는 시간 절약 방법.
  • 환경 삭제 전 비활성화: 환경 삭제 시 해당 환경이 활성화되어 있으면 삭제되지 않는 중요한 주의사항.
# 예시: 데이터 과학 환경 한 번에 생성하는 효율적인 명령어
conda create -n datascience python=3.9 numpy pandas matplotlib scikit-learn

7. 문제 해결 및 고급 기능

일반적인 문제 해결 방법과 고급 사용자를 위한 추가 기능.


7-1. 일반적인 문제 해결

  • 패키지 충돌:
    • conda clean -i 명령으로 인덱스 캐시를 정리하는 해결책.
  • 여러 채널 검색 등으로 느린 설치 속도:
    • conda config --set channel_priority strict 설정으로 개선 가능한 성능 이슈.
    • 개인적으로는 mamba 로 대처를 권함.
  • 환경 손상:
    • conda update --all 또는 환경 재생성을 통한 복구 방법.

7-3. 고급 기능

  • Mamba: Conda의 빠른 대안으로, 동일한 명령 구문으로 사용 가능한 고성능 도구.
  • conda-lock: 완전히 재현 가능한 환경을 위한 락파일 생성 유틸리티.
  • conda-forge: 커뮤니티 주도의 패키지 저장소로 최신 패키지를 제공하는 인기 채널.

2023.08.23 - [개발환경] - [Env] Mamba 설치하기.

 

[Env] Mamba 설치하기.

이 문서는 conda가 설치되지 않은 상태에서 mamba를 설치하는 과정을 기재함. (conda를 개선한 것이 mamba라서 fresh하게 mamba install을 수행.) mamba는 거의 conda와 사용법은 같지만 꽤나 빠른 편이다. 사용

ds31x.tistory.com