Conda와 Pip는 파이썬 패키지를 관리하는 데 사용되는 두 가지 인기있는 도구입니다. 프로젝트나 개발을 하다보면 보통 두가지 도구의 차이를 이해하지 못하고 함께 사용하는 경우가 있습니다. Conda와 Pip의 차이점과 각각의 사용 방법을 살펴보고자 합니다.
Conda 란?
![](https://blog.lucidgrowon.com/wp-content/uploads/2023/07/icons8-year-of-snake-64.png)
Conda : Anaconda(Anaconda: 아마존의 아나콘다 뱀에서 이름을 따왔다고 함) 클라우드 저장소와 Continuum 소프트웨어 사의 패키지 저장소에서 패키지를 관리합니다. Conda의 장점은 바로 의존성을 자동으로 해결해주는 강력한 의존성 관리 기능을 그리고 Anaconda를 통해 가상환경을 제공합니다.
특히 TensorFlow를 설치할 때 다양한 패키지와 라이브러리에 의존하며, 이러한 의존성을 수동으로 설치를 해야하는 단점을 한방에 해결해줍니다.
각각의 프로젝트 패키지 충돌을 피할 수 있고 독립적인 환경으로 구성이 가능하며, 프로젝트별 패키지 관리와 버전 관리를 용이하게 합니다. 그러나 단점으로는 PyPI보다 패키지 수가 상대적으로 적을 수 있고 일부 특정한 패키지나 최신 버전의 패키지가 conda에는 없을 수 있습니다. 이 경우에는 pip를 사용하여 추가 패키지를 별도 설치해야 하며 또한 패키지들에 대한 버전 관리도 별도로 해줘야 합니다.
Pip 란?
Pip : Pip Installs Packages 또는 Pip Installs Python
![Pip](https://lucidgrowon.com/wordpress/wp-content/uploads/2023/07/icons8-python-50.png)
Pip는 Python Package Index (PyPI)에서 패키지를 관리합니다. PyPI (Python Package Index)는 파이썬 패키지 생태계의 중심이며, 거의 모든 오픈 소스 파이썬 패키지들이 PyPI에 호스팅되어 있습니다. 따라서 Pip를 통해 매우 다양한 패키지들을 손쉽게 설치할 수 있습니다.빠근 업데이트, 지속적인 패키지 관리가 장점이지만 의존성 관리와 시스템 레벨 패키지 관리 측면에서는 Conda에 비해 제약이 있을 수 있습니다. 따라서 개발 환경에 따라 적절한 도구를 선택하면 됩니다.
Conda 와 Pip 비교
Anaconda의 conda를 통해 가상환경을 사용하면 종속성 관리, 플랫폼 별 지원, 가상환경 격리와 같은 여러 장점을 얻을 수 있습니다. 그러나 패키지 수, 환경 크기, 버전 관리와 같은 몇 가지 단점등을 고려해서 개발 프로젝트의 요구 사항과 상황에 맞게 판단하여 적절한 패키지 관리 방식을 선택할 수 있습니다.
Conda | Pip | |
---|---|---|
정의 | 크로스 플랫폼, 언어-중립적 패키지 관리자와 환경 관리 시스템 | 파이썬으로 작성된 패키지들을 설치하고 관리하는 도구 |
관리 | 파이썬 패키지 뿐만 아니라 R, Ruby, Lua, Scala, Java, JavaScript, C/C++, FORTRAN 등 다양한 언어의 패키지를 관리할 수 있음 | 파이썬 패키지만 관리 |
환경 관리 | 각 프로젝트를 위한 독립적인 환경을 생성하고 관리하는 기능을 내장, 여러 버전의 파이썬을 동시에 관리 가능 | 가상환경(virtualenv)를 사용하여 독립적인 환경을 만들 수 있지만, 기본적으로는 이 기능이 없음 |
패키지 의존성 | 패키지간의 의존성을 관리하고, 필요한 패키지와 함께 설치하는 기능을 내장 | 의존성 관리는 가능하지만, 패키지 설치 시 필요한 모든 의존성을 자동으로 설치하지는 않음 |
설치 소스 | Anaconda Cloud 및 기타 채널에서 패키지를 가져옴 | PyPI(Python Package Index)에서 패키지를 가져옴 |
주요 명령어 | conda install conda update conda remove, conda create –name envname conda activate envname conda deactivate | pip install pip uninstall pip freeze pip list |