conda에서 channel이란?
conda
를 통해 패키지 관리 및 가상환경 관리를 할 때, channel
을 틍해 어디서 패키지를 가져와 설치할지를 지정할 수 있다.
chnnel
은 간단히 말하자면, 패키지들이 저장되어 있으면서 호스팅 되는 위치라고 생각하면 된다.
conda
는 https://repo.anaconda.com/pkgs/를 default channel로 사용.
conda-forge란?
이 글의 제목에 보이는 conda-forge
는 여러 자발적인 기여자들이 모인 conda-forge라는 커뮤니티에서 운영 및 관리하는 conda용 채널이다.
- 개인도 채널을 운영가능한 구조이므로 정말 많은 채널이 존재함.
- 그 중에서도 기본 채널 그 이상의 퀄리티를 보여주는 채널이 바로
conda-forge
라고 생각한다.
conda-forge의 장점.
conda가 pip보다 안정적이고 편리한 패키지 관리 및 가상환경을 지원하는 것처럼,conda-forge
는 conda의 기본 채널보다 machine learning이나 computer vision, 수치해석, 그리고 django등을 이용한 RESTful API개발에 있어서 보다 다양하고 안정적인 패키지들을 제공한다.
- 원하는 패키지가
conda-forge
에서도 안보인다면, pip를 이용하는 수 밖에 없는 경우가 대다수임. - 이 경우, 해당 패키지를 지속적으로 사용해야하는지도 조금 고민해보는게 좋다.
왜냐하면conda-forge
에서 지원하지 않는 경우 해당 패키지의 사용률이 굉장히 낮음을 의미한다.
이는 해당 패키지가 널리 사용되기에 문제가 있는 것에 기인할 수도 있고 이 경우 지속적인 해당 패키지 의존은 현명한 결정이 아닐 수 있다.
channel 변경 필요성
- 많은 Python 사용자들이 패키지들 간의 호환성 체크 및 가상환경 관리를 위해서 conda(~miniconda)를 사용한다.
- 경험상 기본 채널 보다 다양한 패키지들이
conda-forge
를 통해 제공되기 때문에 아예 default channel을conda-forge
로 하는게 나은 경우가 많다고 생각.
굳이 바꿔야 하나?
물론 매번 conda install -c conda-forge
와 같이 패키지 설치 시 channel을 지정할 수 있다.
실제로 꽤 오랜 기간 -c
옵션을 사용해왔다.
하지만 게으름(~ 게으름은 개인적으로 개발자에게 중요한 덕목이라고 생각한다. 무조건 열심인 경우 발전이 힘든 터라...) 때문에 주로 사용하고자 하는 패키지가 conda-forge
에서 구해야 하는 경우가 많은 현실에서 한번 기본 채널을 아예 바꾸고 편한 삶(-c conda-forge
를 타이핑하지 않는...)을 사는게 낫다라는 결론을 내렸다.
결국 환경 설치시 처음 한 번 무조건 수행하는 루틴으로 기본 채널을 conda-forge
로 변경하고 있다.
Channel 변경방법
channel 확인
우선 conda가 사용하는 channel을 확인하는 방법은 다음과 같다.
conda config --show channels
- 이 경우
defaults
만 보인다면 기본 conda환경을 사용중이라고 할 수 있다. - 여러 채널이 보인다면, 상단에 있을수록 우선권을 가지는 채널로 보면 된다.
default channel 변경
아래 명령어를 수행하면, 이후 패키지 설치시 conda-forge
를 우선적으로 사용하게 된다.
conda config --add channels conda-forge && conda config --set channel_priority strict
이후 다시 channel을 확인하면 다음과 같이 나온다.
channels:
- conda-forge
- defaults
miniforge : 한 걸음 더
conda-forge
를 우선적으로 사용하는 방법으로 한걸음 더 나아갈 경우, conda-forge 커뮤니티에서 제공하는 miniforge
를 사용할 수도 있다.
주변의 Mac (arm64 sillcon)을 사용하는 이들의 경우, miniforge를 이용하다고 한다.
기본적으로 처음에는 pip와 virtualenv를 이용하다가, Anaconda를 사용하고, 이후 본인이 패키지를 설치하여 구성하는 miniconda로 넘어가는 경우가 많은데...
miniconda에서 miniforge로 가는 경우도 꽤 있는 거 같다.
개발만 한다면 좀더 검토를 해보겠는데...
다른 일들이 밀려서 아마도 miniforge 테스트는 꽤 걸릴 거 같고, 당분간은 default channel만 변경하는 것에 만족할 거 같다.
맺으며
아직도 pip를 쓴다면 miniconda를 적극적으로 권한다.
상당히 많은 센터에서 pip보다는 conda를 사용하고, 지나치게 용량이 큰 편인 anaconda보다는 miniconda가 많이 사용되기 때문에 pip만 고집할 이유가 없어보인다.
물론 Intel의 GPU를 이용하는 tensorflow 처럼 pip에서만 설치 가능한 패키지도 있다. 하지만, conda환경에서도 정 궁하면 pip로 설치할 수 있다.
'Programming' 카테고리의 다른 글
[Python] 현재 사용 중인 Python 및 패키지의 실제 경로 확인하기. (2) | 2022.07.18 |
---|---|
[ML] Summary SVM (0) | 2022.05.30 |
[Error: Tensorboard] ImportError: cannot import name 'Mapping' from 'collections' (0) | 2022.05.18 |
[ML] Entropy, KL-Divergence, and Cross-entropy (0) | 2022.05.12 |
sh파일에서 conda 가상환경 activation! (2) | 2021.12.05 |