pip와 conda의 차이점에 대해 https://dailyheumsi.tistory.com/33 글과 https://databonanza.tistory.com/17을 참고하여 공부했습니다.
pip를 맹목적으로 따라치면서 항상 대충 알고 넘어갔던 부분을 짚고 넘어가고자 합니다. 어떤 패키지를 사용하고 싶을 때, pip install 또는 conda install을 사용하게 됩니다. 사실 프로젝트를 할 때 conda가 잘 안되면 pip 쓰고.. 그렇게 설치되는대로만 사용했던 부끄러운 기억이 있습니다.
pip와 conda의 큰 차이점
PyPI의 pip - https://pypi.org/project/pip/
PyPI의 conda - https://pypi.org/project/conda/
pip is the package installer for Python. You can use pip to install packages from the Python Package Index and other indexes.
Conda is a cross-platform, language-agnostic binary package manager. It is the package manager used by Anaconda installations, but it may be used for other systems as well. Conda makes environments first-class citizens, making it easy to create independent environments even for C libraries. Conda is written entirely in Python, and is BSD licensed open source.
패키지 공식 설명을 참고하면 pip는 python만 한정된 패키지 관리자이고, conda는 python 뿐만 아니라, c와 Java 등 다른 언어도 포함되는 패키지 관리자라는 점입니다. 따라서 pip install은 python의 정식 지원을 받는 패키지만을 관리하는 관리자인 것이고, conda는 anaconda에서 지원 받는 패키지만을 관리하는 관리자 입니다.
만약 아나콘다에 가상환경이 없는 채로 진행한다면 두 개의 패키지 설치 관리자는 저장되는 경로 등에서도 차이가 없습니다. 하지만, 가상환경을 이용하면 pip 명령어를 썼을 때 가상환경 디렉토리 내에서 "lib/site-packages" 하위로 패키지가 설치됩니다. pip와 conda의 차이를 살펴보면, 가상환경을 왜 프로젝트 수행시 패키지 관리를 위해 사용해야하는지 알 수 있었습니다.다시 정리해보면, pip는 python 패키지에만 적용됩니다. pip는 소스에서 컴파일 합니다. virtual env를 사용하여 python 환경만 관리합니다. 반면에, conda는 언어에 구애받지 않고 모든 언어의 패키지 관리를 할 수 있습니다. 바이너리를 설치하기 때문에 컴파일 부담을 줄여줍니다. 주로 conda 패키지를 사용하는 것이 좋다고 하지만(Anaconda 환경에서 프로젝트를 할 때를 말하는거 같습니다.) conda에는 pip도 포함됩니다. 종종 conda 패키지는 없지만 pip를 통해 사용 가능한 python 패키지를 설치할 때에는 아래처럼 사용하면 됩니다.
conda install pip
pip install [패키지명]
단순히 습관적으로 pip를 사용하기 보다는 PyPI에서 해당 패키지가 python에만 종속성을 가지는지에 대해 생각해봐야합니다.