
1. Conda란?
- 프로그래밍 언어(특히 Python)의 패키지, 종속성을 관리하기 위한 오픈 소스 패키지 관리 시스템(or Package Manager)과
- 이들이 설치되어 구성되는 (가상)환경을 관리하는 환경관리시스템(package manager, package management system)임.
- conda = pip + venv
conda는 사용자에게
여러 버전의 패키지와 그 종속성을 설치하고 전환할 수 있는 기능을 제공하며,
가상 환경(virtual environment)을 생성하여 프로젝트별로 독립적인 개발 환경 구축이 가능케 해줌.
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
https://how.dev/answers/anaconda-vs-miniconda Conda는 open-source package and environment management system임. pip처럼 package management system...
ds31x.blogspot.com
2-2. 설치 방법:
- 공식 웹사이트에서 운영체제에 맞는 설치 파일 다운로드 필요.
- Anaconda: https://www.anaconda.com/download/
- Miniconda: https://docs.conda.io/en/latest/miniconda.html
- 다운로드한 설치 파일 실행 후 안내에 따라 설치 진행.
- 설치 완료 후 터미널/명령 프롬프트에서
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-0. conda configuration
보통은 설치 과정 중에 자동으로 설정이 되나, 설정이 안 된 경우 다음을 참고할 것.
2024.08.14 - [개발환경] - [conda] windows 터미널에서 conda 설정
[conda] windows 터미널에서 conda 설정
wt를 먼저 설치하고 나서 conda를 설치하면 자동으로 설정이 되지만,conda설치 이후 wt를 설치할 경우, 설정과정이 필요할 수 있음. 이 문서는 터미널에 현재 설치된 conda를 설정하는 방법을 다룸.설
ds31x.tistory.com
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 search 패키지이름 --info # --info는 상세정보 확인용 플래그.
# 특정 채널을 등록된 채널들과 함께 추가해서 특정 패키지를 제공하는지 검색은 -c옵션.
conda search -c 채널이름 패키지이름 --info
# 특정 채널에서만 패키지 제공 여부를 점검하려면,
conda search -c 채널이름 패키지이름 --info --override-channels
# 패키지 설치: 지정된 패키지를 현재 환경에 추가
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 + packaging.version
1. Semantic Versioning SystemSemantic Versioning (SemVer) 시스템에 따라,소프트웨어에서 major와 minor, patch (or micro) 버전을 구분하여 버전을 매김.Python에서는 PEP 440 에서 버전 표기 방식을 지정하고 있으며 SemVe
ds31x.tistory.com
3-2-1. 특정 패키지에 특정 채널 및 빌드 지정 등의 예.
다음의 예를 살펴볼 것.
# 1. 버전 지정
conda install numpy=1.21
# 2. 범위 지정
conda install "numpy>=1.20"
# 3. 특정 채널에서 설치
conda install conda-forge::numpy
# 4. 특정 버전 및 build 지정 (build만 단독 지정 불가)
conda install numpy=1.20.3=py39h2ae25f5_0
- 참고로 Python은 gc 관련 버그 개선등을 고려할 때, 최소한 3.4이상은 사용하는게 좋다.
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 패키지이름
4-5. 패키지 별로 채널을 지정하기
(예: pytorch::pytorch는 pytorch 채널의 pytorch 패키지).
# 1. 특정 채널의 패키지 명시
# - `pytorch::pytorch`는 `pytorch` 채널에서 제공하는 `pytorch` 패키지를 설치합니다.
# - 동일한 이름의 패키지가 여러 채널에 존재할 수 있으므로 출처를 명확히 지정합니다.
conda install pytorch::pytorch
# 2. 다른 채널과의 구분
# - `conda-forge::numpy`는 `conda-forge` 채널에서 제공하는 `numpy` 패키지를 설치합니다.
# - 기본 채널이나 다른 채널의 `numpy`와 구분하기 위해 사용됩니다.
conda install conda-forge::numpy
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
배포/운영 등에서 사용하는 경우(플랫폼, 아키텍처 등이 동일)는 다음의 명령어가 보다 나음.
# OS, 아키텍처, 빌드 버전까지 포함해 1:1로 복제가능하도록 백업.
conda list --explicit > spec-file.txt
# 생성된 파일로부터 복원.
conda create --name myenv --file spec.txt
> 는 redirection으로 stdout을 파일로 바꾸는 명령어임. 자세한 것은 다음을 참고:
6. 유용한 팁과 모범 사례
Conda를 효율적으로 사용하기 위한 권장 사항과 전문가들의 조언.
- 프로젝트별 독립 환경: 각 프로젝트마다 별도의 환경을 생성하여 의존성 충돌 방지가 중요한 관행.
- 환경 이름 규칙: 목적이나 프로젝트를 나타내는 명확한 환경 이름 사용이 바람직한 방식.
- 환경 파일 버전 관리:
environment.yml파일을 프로젝트의 버전 관리 시스템에 포함하는 실용적인 접근법. - 최소한의 패키지만 설치: 필요한 패키지만 설치하여 환경을 가볍게 유지하는 효율적인 전략.
--from-history활용: 환경 공유 시 플랫폼 간 호환성을 높이기 위한 유용한 옵션.- 생성 시 패키지 지정: 환경 생성 시 필요한 패키지를 함께 설치하는 시간 절약 방법.
- 환경 삭제 전 비활성화: 환경 삭제 시 해당 환경이 활성화되어 있으면 삭제되지 않는 중요한 주의사항.
# 예시: 데이터 과학 환경 한 번에 생성하는 효율적인 명령어
conda create -n datascience python=3.9 numpy pandas matplotlib scikit-learn
yaml 은 일종의 데이터 직렬화 언어 로 설정파일들에서 많이 이용되는 파일포맷임. 자세한 건 다음을 참고:
2024.01.07 - [분류 전체보기] - [Term] YAML (Yet Another Markup Language)
[Term] YAML (Yet Another Markup Language)
Human-friendly Unicode based Data Serialization Language 인간친화적인 유니코드 기반의 데이터 직렬화 언어 https://yaml.org/spec/1.1/#id857168 YAML Ain’t Markup Language (YAML™) Version 1.1 YAML Ain’t Markup Language (YAML™) Vers
ds31x.tistory.com
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와 사용법은 같지만 꽤나 빠른 편이다.https://gi
ds31x.tistory.com
'개발환경' 카테고리의 다른 글
| Visual Studio vs. VS Code (3) | 2025.08.12 |
|---|---|
| [CE] WSL 완전제거하기 (MSI버전으로 설치시) (0) | 2025.03.06 |
| [vscode] jupyter extension 설치하기. (0) | 2025.02.21 |
| [vscode] vim extension (0) | 2025.02.21 |
| [Conda] miniconda 설치하기: Windows, macOS, WSL (1) | 2024.09.12 |