conda 또는 conda-forge를 Python 환경에 사용해야합니까?


128

Conda그리고 conda-forge둘 다 Python 패키지 관리자입니다. 패키지가 두 저장소에 모두 존재할 때 적절한 선택은 무엇입니까? 예를 들어, Django는 둘 중 하나로 설치할 수 있지만 둘 사이의 차이점은 몇 가지 종속성입니다 (conda-forge에는 더 많은 것이 있습니다). 이러한 차이점에 대한 설명은 없으며 간단한 README도 없습니다.

어느 것을 사용해야합니까? Conda 또는 conda-forge? 그게 그렇게 중요한 건가?


5
"Conda와 conda-forge는 모두 Python 패키지 관리자입니다." 나는 그것이 사실이라고 생각하지 않습니다. 나는 그것들이 같은 범주에 있다고 생각하지 않습니다. conda패키지 관리자이며 conda-forge채널입니다. 이 질문을 받았을 때 사실 이었을까요?
endolith 19

답변:


203

짧은 대답은 제 경험상 일반적으로 어떤 것을 사용하든 상관 없다는 것입니다.

긴 대답 :

그래서 conda-forge패키지가 설치 될 수있는 추가 채널입니다. 이런 의미에서 기본 채널이나 사람들이 패키지를 게시 한 다른 수백 개 (수천 개?)의 채널보다 더 특별하지 않습니다. https://anaconda.org 에서 가입하면 자신의 채널을 추가 할 수 있습니다. 자신의 Conda 패키지를 업로드 .

여기서는 conda크로스 플랫폼 패키지 관리자 인, conda-forge패키지 채널 인 , 사이의 질문 문구에서 명확하지 않은 구분을해야합니다 . conda소프트웨어 의 주요 개발자 인 Anaconda Inc. (이전의 Continuum IO) 도 별도의 패키지 채널을 유지합니다.이 채널은 입력 할 때 기본값입니다.conda install packagename 옵션을 변경하지 않고 입니다.

채널 옵션을 변경하는 방법에는 세 가지가 있습니다. 처음 두 개는 패키지를 설치할 때마다 수행되고 마지막 두 개는 영구적입니다. 첫 번째는 패키지를 설치할 때마다 채널을 지정하는 것입니다.

conda install -c some-channel packagename

물론 패키지는 해당 채널에 있어야합니다. 이 방법은 설치됩니다packagename 및 모든 종속 some-channel. 또는 다음을 지정할 수 있습니다.

conda install some-channel::packagename

패키지는 여전히 존재해야합니다. some-channel 하지만 지금은에서만 packagename가져옵니다 some-channel. 종속성을 충족시키는 데 필요한 다른 패키지는 기본 채널 목록에서 검색됩니다.

채널 구성을 보려면 다음과 같이 작성할 수 있습니다.

conda config --show channels

채널 검색 순서를 제어 할 수 있습니다. conda config . 당신은 쓸 수 있습니다:

conda config --add channels some-channel

구성 목록 some-channel의 맨 위에 채널을 추가합니다 channels. 이것은 some-channel가장 높은 우선 순위를 부여 합니다. 우선 순위 결정 ( 부분적으로 는 둘 이상의 채널에 특정 패키지가있을 때 어떤 채널이 선택 ) 합니다. 목록 끝에 채널을 추가하고 가장 낮은 우선 순위를 지정하려면 다음을 입력하십시오.

conda config --append channels some-channel

추가 한 채널을 제거하려면 다음과 같이 작성하면됩니다.

conda config --remove channels some-channel

보다

conda config -h

더 많은 옵션.

모두 말하면 Anaconda에서 유지 관리 하는 conda-forge채널 대신 채널 을 사용하는 4 가지 주요 이유가 있습니다 defaults.

  1. 의 패키지 는 채널 에있는 것보다 최신 상태 일 conda-forge 있습니다.defaults
  2. conda-forge채널에 사용할 수없는 패키지 가 있습니다.defaults
  3. 대신 openblas(from conda-forge) 과 같은 종속성을 사용하는 것이 좋습니다.mkl 에서 (defaults ).
  4. 컴파일 된 라이브러리가 필요한 패키지 (예 : C 확장 또는 C 라이브러리 주위의 래퍼) 를 설치하는 경우 바이너리로 인해 단일 채널에서 환경에 모든 패키지를 설치하면 비 호환성 가능성 줄어들 있습니다. 기본 C 라이브러리의 호환성 (하지만이 조언은 구식이거나 향후 변경 될 수 있습니다).

1
감사! 두 가지 관련 질문이 있습니다. 1. 어떤 채널을 사용해도 좋은지 어떻게 알 수 있습니까? 2. 한 채널에서 구성한 후 어떻게 다시 기본값으로 재설정 할 수 있습니까?
Daniel

1
@Kenny 첫 번째 질문에 답하려면 anaconda.org에서 원하는 패키지를 검색하고 패키지가 있는 채널을 확인해야합니다. 두 번째 질문에 대한 답변을 편집했습니다. 그러나 채널에서 단일 패키지를 설치하려는 경우 conda install -c some-channel packagename명령을 작성하는 방법 을 사용하는 것이 더 쉬울 것입니다
darthbith

이것은 훌륭합니다! 지원되는 모듈 수, 신선도, 적용 범위 등에서 conda-forge와 conda를 비교할 수 있습니까?
Rutger Hofste

1
아닌가 mkl보다 더 빨리 openblas?
endolith

3
@endolith 어쩌면하지만, 1) 가능한 인텔 프로세서와 2)에 오픈 소스가 아니다
darthbith

4

Anaconda는 서비스 약관을 변경하여 "중공업 사용자"가 conda-forge채널을 포함하지 않는 비용을 지불해야 합니다.

conda-forge사용량에 대한 비용을 지불하고 싶지 않다면 고수하고 싶을 것입니다 . 문서에 명시된대로 :

conda config --add channels conda-forge
conda config --set channel_priority strict
conda install <package-name>

또한 기본 채널이 있고 ppc64le 및 aarch64 플랫폼과 다른 일반적인 플랫폼을 지원 하는 miniforge 를 사용할 수도 conda-forge있습니다.


3

conda-forge 채널은 conda 용으로 빌드되었지만 아직 공식 Anaconda 배포판에 포함되지 않은 패키지를 찾을 수있는 곳입니다.

일반적으로 이들 중 하나를 사용할 수 있습니다.


1

conda installconda-forge를 적용하지 않으면 채널을 사용할 수 없기 때문에 단순으로 설치할 수없는 일부 Python 라이브러리가 있습니다 . 내 경험상 pip는 conda보다 다른 채널 소스를 조사하는 것이 더 일반적입니다. 예를 들어 설치하려면 ** cond **를 python-constraint통해 설치할 수 있습니다 pip install. 채널을 지정해야합니다.- conda-forge.

conda install -c conda-forge python-constraint // works

하지만

conda install python-constraint

혼란스러운 대답. pip 설치는 conda의 자체 패키지 관리 및 종속성 확인 외부에서 패키지를 가져옵니다. 즉, 수동으로 conda update --all패키지 (및 잠재적으로 해당 종속성)를 관리해야하며 같은 명령 은 pip 설치된 패키지를 업데이트하지 않습니다
Jean Monet
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.