CONDA 환경에서 독점적으로 PIP를 사용하는 경우의 함정은 무엇입니까?

Dec 02 2020

배경

동일한 웹 사이트 의 공식 문서 와이 블로그 - 가능한 한 많은 요구 사항conda설치 한 다음 pip를 사용하는 것이 좋습니다 . 분명히 이것은에 conda의해 만들어진 종속성에 대한 변경 사항을 인식하지 못 하기 때문에 pip종속성을 올바르게 해결할 수 없기 때문입니다.

질문

이제 한 독점적으로 사용하는 경우 pip와 함께 아무것도 설치하지 않고 이동 conda, 기대하는 합리적인 것 같다 conda의해 변경 사항을 인식 할 필요가 없다 pip- 같은 conda효과적으로 분리 종속성 단순한 도구가되어 버전을 관리 할 수 있습니다. 그러나 .NET 과 함께 가능한 한 많은 요구 사항을 설치conda 하지 않으므로 공식 권장 사항에 위배 됩니다 .

질문이 유지되도록 : 어떠한 알려진 단점이 독점적으로 사용하여 pipA의 conda환경은?

비슷한 주제

의 유사한 주제가 여기 에서 약간 다루어 졌지만 환경 에서 독점적으로 사용하는 경우는 다루지 않습니다 . 나는 또한 여기에 있었다 :pipconda

  • Python 패키지를 설치할 때 pip와 conda를 선호하는 구체적인 이유
  • pip와 conda의 차이점은 무엇입니까?
  • Pip을 사용하여 Anaconda 환경에 패키지 설치

답변

2 merv Dec 02 2020 at 03:49

이에 대한 포괄적 인 답변을 제공 할 수 있는지 확실하지 않지만, 떠오르는 몇 가지 주요 사항은 다음과 같습니다.

  1. 비 Python 종속성 해결에 대한 깊은 지원 부족 . 비 Python 리소스를 번들로 제공하는 휠이 시간이 지남에 따라 더 많이 사용 가능해졌지만 Conda가 Python 전용이 아닌 일반 패키지 관리자가되어 제공하는 커버리지 근처에는 없습니다. 상호 운용 가능한 컴퓨팅 (예 reticulate:)을 수행하는 사람에게는 Conda가 선호 될 것으로 기대합니다.

  2. 최적화 된 라이브러리 . 일종의 첫 번째 요점과 관련이 있지만 Anaconda 팀은 최적화 된 버전의 패키지를 구축하기 위해 노력했습니다 (예 : MKL for numpy). PyPI를 통해 동등한 기능을 사용할 수 있는지 확실하지 않습니다. 1

  3. 환경 전반에 걸쳐 낭비되는 중복성 . Conda는 패키지와 환경이 동일한 볼륨에있을 때 하드 링크를 사용하고 볼륨 간 스패닝을 위해 소프트 링크를 지원합니다. 이렇게하면 여러 환경에 설치된 패키지 복제를 최소화 할 수 있습니다.

  4. 수출 복잡 . 내보낼 때 ( conda env export) Conda는 설치된 모든 pip패키지를 선택하지 않고 PyPI에서 가져온 패키지 만 선택합니다 . 즉, GitHub 등에서 설치된 것을 놓칠 것입니다. pip 전용 경로를 사용했다면 더 안정적인 내보내기 전략 pip freeze > requirements.txt은를 사용 하고 다음과 같은 YAML을 만드는 것입니다.

    channels:
      - defaults
    dependencies:
      - python=3.8  # specify the version
      - pip
      - pip:
        - -r requirements.txt
    

    환경을 재현하는 데 사용됩니다.

즉,이 모든 것이 어떤 사람들에게는 중요하지 않다는 것을 쉽게 상상할 수 있습니다 (대부분은 편리함), 특히 순수하게 Python으로 작업하는 경향이있는 사람들. 그러나 그러한 경우에는 단순히 Conda를 완전히 포기하고 Python 전용 가상 환경 관리자를 사용하지 않는 이유를 알 수 없습니다.


[1] 다른 사람이 알고 있으면 누군가 나를 바로 잡으십시오.