conda install과 pip install의 차이.기능 비교 등【Python】

2019/5/26

지금까지 pip install은 conda install을 사용할 수 없을 때의 대용이라는 정도 밖에 인식하지 못했습니다.원하는 패키지가 Anaconda의 리포지토리에 없는 경우는 pip로 인스톨 하고 있었는데, 어느 때 이러한 충돌로 인해 환경이 망가져 버렸습니다.

Jupyter Notebook이 시작되지 않는다고 생각하면 Anaconda 환경이 손상되었습니다.

모처럼의 기회였기 때문에 pip와 conda의 차이를 조사해 보았으므로, 이하에 비망록으로서 남겨 둡니다.

conda와 pip의 차이

Conda란?

한마디로 나타내면 Anaconda/Miniconda에 표준으로 부속되어 있는 패키지 매니저이며, 환경 관리 시스템.

Anaconda는 데이터 과학용 패키지를 제공하는 플랫폼입니다. Python이나 R등의 데이터 사이언스용 프로그래밍 언어나, 통계 해석·기계 학습에 필요한 패키지를 일괄로 인스톨 할 수 있어, 곧바로 Python을 이용하는 환경을 구축할 수 있다.
최소한의 구성밖에 없는 것은 Miniconda라고 하는 것도 있다.

conda는 Anaconda 설치 프로그램이나 miniconda 설치 프로그램에 의해 설치된 경우에만 작동합니다. python + pip 환경에 conda를 설치해도 Anaconda 배포판에서와 같이 사용할 수 없습니다.

pip란?

순수한 파이썬을 설치하면 오는 파이썬 표준 패키지 설치 프로그램 및 패키지 관리 시스템.

Python 프로그래밍 언어 용 리포지토리 인 Python Package Index (PyPI)에서 패키지를 다운로드하여 설치합니다.

각 기능의 차이

conda와 pip의 역할을 간단한 표로 정리했습니다.

機能콘도삐악 삐악 울다
패키지 설치 및 관리가능가능
파이썬 버전 전환가능불가 (pipenv, pyenv로 대체)
가상 환경 관리가능불가 (pipenv, virtualenv, venv로 대체)

conda는 환경 관리 시스템이기 때문에 가상 환경을 구축하고, 파이썬 버전을 3.7로, 2.7로 전환 할 수 있습니다.

pip에서는 pyenv(버전 관리)나 venv(가상 환경 관리) 등의 패키지를 설치하여 사용하게 됩니다.

최근에는 pipenv라는 것이 나오고, 이쪽은 거의 conda의 대체가 되는 기능을 갖추고 있는 것 같습니다.

conda install 및 pip install

conda install과 pip install은 명령이 거의 비슷하지만 패키지를 설치하는 방법은 상당히 다릅니다. anaconda.com의 사이트에 알기 쉬운 비교표가 있었으므로, 인용하겠습니다(일본어&자신이 이해하기 쉽게 변경하고 있습니다).

conda install핍 설치
패키지 형식바이너리휠 또는 소스
협력업체不要必要
패키지 타입다른 언어도 가능파이썬 전용
가상 환경 관리, 버전 관리可能불가 (virtualenv, venv로 대체)
종속성 검사없음
패키지 다운로드 소스아나콘다 리포지토리, 아나콘다 클라우드PyPl

・conda는 python 이외의 언어에도 대응

Anaconda/Miniconda는 Python, R, Ruby, Java, JavaScript, C/C++, FORTRAN 등 여러 프로그래밍 언어와 패키지를 설치할 수 있는 크로스 플랫폼입니다.

conda는 크로스 플랫폼에 다양한 언어로 작성된 소프트웨어 패키지를 설치할 수 있습니다.

pip는 Python 패키지만 설치할 수 있습니다.

· 컴파일이 필요한지 여부

conda 명령으로 설치할 수 있는 패키지는 Anaconda cloud라는 전용 저장소에 1000개 이상 저장됩니다.

이 패키지는 컴파일 된 바이너리 파일이므로 컴파일러가 필요하지 않고 다운로드하여 설치할 수 있습니다.

pip로 설치하는 파일에는 소스 파일이 포함되어 있으므로 클라이언트 측에서 컴파일해야 합니다.

이것에 의해 환경에 따라서는 문제가 일어나는 경우가 있어, 환경 구축으로 망설이는 경우가 많은 원인의 하나라고 생각됩니다.수 있습니다.그것은 외부 종속성을 필요로 할 수 있습니다.

· 의존성 ​​검사의 유무

pip에서는 패키지를 설치할 때마다 모든 종속성이 동시에 충족되지는 않는 것 같습니다.이 경우, 설치한 패키지간에 각각이 의존하는 패키지의 버전이 다르면 충돌이 일어나 버립니다.

conda는 모든 패키지의 메타데이터를 수집하여 종속성을 파악하는 SAT solver라는 것을 갖추고 있어 이에 대응하고 있습니다.설치시 패키지 간의 복잡한 종속성을 신속하게 파악하고 적절한 업데이트 및 설치를 수행합니다.

· 실행 속도의 차이

conda로 설치한 numpy에 의한 행렬 연산이 빠르다는 정보도 있었습니다.계산의 종류에 따릅니다만, 2배 이상도 차이가 나오는 것 같습니다.

NumPy에서 호출되는 행렬 연산을 실제로 담당하는 BLAS (Basic Linear Algebra Subprograms)라는 것에는 다양한 구현법이 존재하고 있습니다만, 그 하나가 Intel사가 개발하고 있는 Intel MKL(Math Kernel Library )입니다.사실 Anaconda에 의해 설치된 NumPy에서 호출되는 BLAS는 MKL이지만 pip에서 NumPy를 설치하면 일반적으로 OpenBLAS라는 BLAS가 사용되므로 여기에서 성능에 차이가 발생할 수 있습니다. 입니다.

Anaconda의 NumPy와 pip에 의한 NumPy의 속도 차이 - Orizuru

BLAS는 기본 행렬과 벡터 계산을 수행하는 라이브러리입니다. numpy 라이브러리 안에 한층 더 라이브 개미가 있어 잘 모르게 되어 옵니다…

「BLAS의 차이에 의해 실제로 계산 처리의 속도가 얼마나 바뀌는지」나 「자신의 환경에서 어느 BLAS가 사용되고 있는지 조사하는 방법」은 이하의 페이지에 상세히 정리하고 있습니다.원한다면 참고하십시오.

Numpy에 사용되는 BLAS에 의해 계산 속도가 바뀌는 것 같다【Python】

이상, conda와 pip의 차이였습니다.

참조


Understanding Conda and Pip
https://conda.io/en/latest/
Anaconda의 NumPy와 PyPI의 NumPy 속도 비교
Stop Installing Tensorflow using pip for performance sake!