CONDA 환경에서 독점적으로 PIP를 사용하는 경우의 함정은 무엇입니까?
배경
동일한 웹 사이트 의 공식 문서 와이 블로그 - 가능한 한 많은 요구 사항conda
을 설치 한 다음 pip를 사용하는 것이 좋습니다 . 분명히 이것은에 conda
의해 만들어진 종속성에 대한 변경 사항을 인식하지 못 하기 때문에 pip
종속성을 올바르게 해결할 수 없기 때문입니다.
질문
이제 한 독점적으로 사용하는 경우 pip
와 함께 아무것도 설치하지 않고 이동 conda
, 기대하는 합리적인 것 같다 conda
의해 변경 사항을 인식 할 필요가 없다 pip
- 같은 conda
효과적으로 분리 종속성 단순한 도구가되어 버전을 관리 할 수 있습니다. 그러나 .NET 과 함께 가능한 한 많은 요구 사항을 설치conda
하지 않으므로 공식 권장 사항에 위배 됩니다 .
질문이 유지되도록 : 어떠한 알려진 단점이 독점적으로 사용하여 pip
A의 conda
환경은?
비슷한 주제
의 유사한 주제가 여기 에서 약간 다루어 졌지만 환경 에서 독점적으로 사용하는 경우는 다루지 않습니다 . 나는 또한 여기에 있었다 :pip
conda
- Python 패키지를 설치할 때 pip와 conda를 선호하는 구체적인 이유
- pip와 conda의 차이점은 무엇입니까?
- Pip을 사용하여 Anaconda 환경에 패키지 설치
답변
이에 대한 포괄적 인 답변을 제공 할 수 있는지 확실하지 않지만, 떠오르는 몇 가지 주요 사항은 다음과 같습니다.
비 Python 종속성 해결에 대한 깊은 지원 부족 . 비 Python 리소스를 번들로 제공하는 휠이 시간이 지남에 따라 더 많이 사용 가능해졌지만 Conda가 Python 전용이 아닌 일반 패키지 관리자가되어 제공하는 커버리지 근처에는 없습니다. 상호 운용 가능한 컴퓨팅 (예
reticulate
:)을 수행하는 사람에게는 Conda가 선호 될 것으로 기대합니다.최적화 된 라이브러리 . 일종의 첫 번째 요점과 관련이 있지만 Anaconda 팀은 최적화 된 버전의 패키지를 구축하기 위해 노력했습니다 (예 : MKL for
numpy
). PyPI를 통해 동등한 기능을 사용할 수 있는지 확실하지 않습니다. 1환경 전반에 걸쳐 낭비되는 중복성 . Conda는 패키지와 환경이 동일한 볼륨에있을 때 하드 링크를 사용하고 볼륨 간 스패닝을 위해 소프트 링크를 지원합니다. 이렇게하면 여러 환경에 설치된 패키지 복제를 최소화 할 수 있습니다.
수출 복잡 . 내보낼 때 (
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] 다른 사람이 알고 있으면 누군가 나를 바로 잡으십시오.