핍과 콘다의 차이점은 무엇입니까?


722

pip파이썬 패키지의 패키지 관리자 라는 것을 알고 있습니다. 그러나 IPython 웹 사이트에서 설치하여 IPython을 설치하는 것을 보았습니다 conda.

pipIPython을 설치 하는 데 사용할 수 있습니까 ? conda이미 다른 파이썬 패키지 관리자로 사용해야하는 이유는 무엇 pip입니까?

차이점은 무엇이며 pip그리고 conda?


설치 페이지 를 주의 깊게 읽으면 pip로 설치하는 전체 지침 이 표시 되며 목표는 conda/ enpgk목표입니다 new users who want to get up and running with minimal effort: canopy / anaconda는 독립형 환경이며 시스템 파이썬을 방해하지 않습니다 (venv와 같지만 더 강력합니다). iPython이 아닌 BTW IPyhton (대문자 I)
Matt

3
한 가지 차이점은 conda보다 pip로 더 많은 것을 설치할 수 있다는 것입니다. pip는 pypi의 모든 것을 하나의 명령으로 설치할 수 있습니다. conda는 뼈대, 빌드, 설치 및 작동하지 않는 경우 더 많은 세 가지 명령이 필요합니다. pip는 하나의 명령으로 github 또는 source의 모든 것을 설치할 수 있습니다. conda는 "레시피"를 작성해야합니다. 특히 문서가 항상 부정확하거나 오래된 것으로 보이므로 쉽지 않습니다.
endolith

5
관련 질문 : pip over conda의 장점은 무엇입니까? 아래에 Anaconda 옹호가 많이 있지만 핍에는 아무것도 없습니다. 아나콘다가 그렇게 큰 경우 왜 핍이 여전히 표준입니까?
Brian Postow

24
"나는 계몽이 견적을 찾을 핍은 패키지 관리자이며, VIRTUALENV는 환경 관리자입니다. CONDA은 모두입니다." ( 참조 )
Atcold

1
관찰 : 나는 conda가 zillion 꾸러미를 다운로드하는 것을 암시한다고 생각했지만, 더 이상 사실이 아니다 : miniconda를 설치할 수있다. 이것은 기본적으로 꾸러미 관리자 conda.io/docs/install/quick.html
Hugh Perkins

답변:


520

Conda 블로그 에서 인용 :

파이썬 세계에 오랫동안 관여해온 우리는 모두 pip, easy_install 및 virtualenv를 알고 있지만 이러한 도구는 특정 요구 사항을 모두 충족하지 못했습니다. 주요 문제는 Python에 중점을두고 소스 코드에 setup.py가없고 Python 사이트에 파일을 설치하지 않는 HDF5, MKL, LLVM 등과 같은 비 Python 라이브러리 종속성을 무시한다는 것입니다. -packages 디렉토리.

Conda는 포장 도구 및 설치 프로그램으로서 그 이상의 기능을 수행합니다 pip. Python 패키지뿐만 아니라 Python 패키지 외부 의 라이브러리 종속성을 처리 합니다. Conda는 또한 가상 환경을 만듭니다 virtualenv.

따라서 Conda 는 Python 및 비 Python 설치 작업을 모두 처리 할 수있는 또 다른 도구 인 Buildout 과 비교해야 합니다.

Conda는 새로운 패키징 형식을 도입하므로 pipConda를 상호 교환 적으로 사용할 수 없습니다 . pipConda 패키지 형식을 설치할 수 없습니다. 두 도구를 나란히 사용할 수 있지만 (로 설치 pip하여 conda install pip) 상호 운용되지는 않습니다.

이 답변을 작성한 후 Anaconda는 Conda 및 Pip 이해대한 새로운 페이지를 게시했습니다 .

이것은 conda와 pip의 주요 차이점을 강조합니다. Pip은 Python 패키지를 설치하는 반면 conda는 모든 언어로 작성된 소프트웨어를 포함 할 수있는 패키지를 설치합니다. 예를 들어, pip를 사용하기 전에 시스템 패키지 관리자를 통해 또는 설치 프로그램을 다운로드하여 실행하여 Python 인터프리터를 설치해야합니다. 반면에 Conda는 Python 인터프리터뿐만 아니라 Python 패키지도 직접 설치할 수 있습니다.

그리고 더

때때로 패키지는 콘다 패키지로 사용할 수 없지만 PyPI에서 사용할 수 있으며 pip와 함께 설치할 수있는 패키지가 필요합니다. 이 경우 conda와 pip를 모두 사용하는 것이 좋습니다.


18
설명해 주셔서 감사합니다. 그러나 Conda가 pip를 대체 할 수 있는지 여부와 여전히 혼란 스럽습니다. 즉, Conda는 pip가 할 수있는 모든 것을 할 수 있습니까?
lazywei

10
@ lazywei : 나는 그것이 할 수 있다고 생각하지 않습니다; 예를 들어 Conda가 휠 아카이브 형식을 지원하는 것처럼 보이지 않습니다. 그들은 다른 목표를 가지고 있습니다.
Martijn Pieters

45
@ naught101 "레시피 만 작성"입력하는 것만 큼 쉽지 않습니다 pip install.
endolith

23
다른 버전을 제외하고 pip와 conda를 사용하여 동일한 패키지를 설치하면 어떤 일이 발생하는지 설명 할 수 있습니까?
랜스 루오 장

4
@ jrh : OS 패키지 관리자를 사용할 때 핵심 기능이 아닌 동일한 패키지의 여러 버전을 나란히 설치할 수 없습니다. Conda는 각각 특정 버전의 설치된 패키지를 사용하여 환경을 관리 합니다 . 따라서 얼마 전에 개발 된 프로젝트 A는 이전 버전의 라이브러리 Foo에 계속 집착 할 수 있지만 (새로운 릴리스에서 작동하도록 프로젝트를 업그레이드하는 데 사용할 수있는 리소스는 없음) 프로젝트 B에는 동일한 라이브러리의 최신 버전이 필요합니다.
Martijn Pieters

246

짧은 요약은 다음과 같습니다.

  • 파이썬 패키지 만.
  • 소스에서 모든 것을 컴파일합니다. 편집 : pip는 바이너리 휠을 사용할 수있는 경우 설치합니다.
  • 핵심 Python 커뮤니티에서 축복을받습니다 (예 : Python 3.4+에는 pip를 자동으로 부트 스트랩하는 코드가 포함되어 있습니다).

콘다

  • 파이썬 불가지론. 기존 패키지의 주요 초점은 Python을위한 것이며 실제로 Conda 자체는 Python으로 작성되었지만 C 라이브러리 또는 R 패키지 또는 실제로는 Conda 패키지를 가질 수도 있습니다.
  • 바이너리를 설치합니다. conda build소스에서 패키지를 빌드 하는 도구가 있지만 conda install이미 빌드 된 Conda 패키지에서 항목을 설치합니다.
  • 외부. Conda는 Continuum Analytics에서 제공하는 Python 배포판 인 Anaconda의 패키지 관리자이지만 Anaconda 외부에서도 사용할 수 있습니다. pip를 설치하여 기존 Python 설치와 함께 사용할 수 있습니다 (기존 설치를 사용해야 할 이유가없는 한 권장하지는 않음).

두 경우 모두 :

  • 파이썬으로 작성
  • 오픈 소스 (Conda는 BSD이고 pip는 MIT입니다)

Conda의 첫 번째 두 가지 요점은 실제로 많은 패키지에서 핍보다 유리합니다. pip는 소스에서 설치하기 때문에 소스 코드를 컴파일 할 수없는 경우 소스를 설치하는 것이 고통 스러울 수 있습니다 (특히 Windows의 경우에 해당하지만 패키지에 어려운 C 또는 FORTRAN 라이브러리가있는 경우 Linux의 경우에도 해당 될 수 있음) 의존성). Conda는 바이너리로 설치하는데, 누군가 (예 : Continuum)가 이미 패키지를 컴파일하는 데 많은 노력을 기울 였기 때문에 설치가 쉽습니다.

자신 만의 패키지를 만들고 싶다면 약간의 차이점도 있습니다. 예를 들어, pip는 setuptools를 기반으로 구축되는 반면 Conda는 자체 형식을 사용하므로 정적 및 파이썬과 무관 한 장점이 있습니다.


21
pip는 더 이상 소스에서 모든 것을 구축하지 않습니다. 휠을 사용할 수 pip install --use-wheel <package>있는 경우 내장 패키지를 설치합니다. 여기를 참조하십시오 : wheel.readthedocs.org/en/latest . 그러나 휠에 대한 나의 개인적인 경험은 과학적 휠 패키지가 거의 없기 때문에 순전히 학문적입니다. 물론 빌드 환경이 올바르게 설정되지 않은 경우 pip install은 대부분 Windows에서 작동하지 않습니다. 따라서 현재 conda ftw.
Caleb Hattingh

4
휠은 여전히 ​​새롭고 기본적으로 사용되지 않으므로 아직 실제로는 많지 않은 것은 놀라운 일이 아닙니다. 휠은 여전히 ​​"Python specific"범주에 맞습니다. 즉, 비 Python 패키지 또는 비 Python 패키지에 의존하는 Python 패키지에는 적합하지 않을 수 있습니다.
asmeurer

4
두 번째 글 머리 기호는 지금 역사적인 메모 일 뿐이지 만 나중에도 계속 진행해야합니다. 요즘 가장 큰 차이점은 pip는 패키지 관리자이고 conda는 더 많은 환경 관리자라는 것입니다.
Shep

9
pip가 소스에서 컴파일 될 수는 있지만 실제로 패키지가 휠로 이동함에 따라 점점 더 빈번 해집니다. 요즘에는 pip로 몇 초 안에 필요한 것을 대부분 설치할 수 있습니다. 따라서이 답변이 틀린 것은 아닙니다. 지난 몇 년 동안 핍이 상당히 많이 개선 되었기 때문에 약간 구식이되었습니다
Shep

4
결코 그 핍은 소스에서 설치할 수있는 진정한 없었다. 바퀴가 있기 전에 우리는 기본 바이너리 설치 형식으로 달걀을 사용했으며 Windows 설치에 권장되는 배포 형식을 사용했으며 pip가 사용 가능한 최상의 옵션이라면 달걀을 설치할 것입니다.
Martijn Pieters

96

다른 답변은 세부 사항에 대한 공정한 설명을 제공하지만 일부 고급 요점을 강조하고 싶습니다.

pip는 python 패키지 의 설치, 업그레이드 및 제거를 용이하게하는 패키지 관리자입니다 . 가상 파이썬 환경 에서도 작동 합니다.

conda는 모든 소프트웨어 (설치, 업그레이드 및 제거) 의 패키지 관리자입니다 . 가상 시스템 환경 에서도 작동 합니다.

conda 디자인의 목표 중 하나는 사용자가 필요로하는 전체 소프트웨어 스택에 대한 패키지 관리를 용이하게하는 것입니다.이 중 하나 이상의 Python 버전은 작은 부분 일 수 있습니다. 여기에는 선형 대수와 같은 저수준 라이브러리, Windows의 mingw와 같은 컴파일러, 편집기, Hg 및 Git과 같은 버전 제어 도구 또는 배포 및 관리가 필요한 모든 것이 포함 됩니다.

버전 관리의 경우 pip를 사용하면 여러 파이썬 환경 을 전환하고 관리 할 수 있습니다.

Conda를 사용하면 C 라이브러리, 컴파일러, 테스트 슈트, 데이터베이스 엔진 등과 같이 버전 번호가 다른 여러 가지 범용 환경 을 전환하고 관리 수 있습니다.

Conda는 Windows 중심이 아니지만 Windows에서는 컴파일이 필요한 복잡한 과학 패키지를 설치하고 관리해야 할 때 현재 사용 가능한 우수한 솔루션입니다.

Windows에서 pip를 통해 이러한 많은 패키지를 컴파일하려고 시도한 시간을 잃어버린 시간을 생각하거나 pip install컴파일이 필요한 세션에서 디버그 세션을 디버그하려고했을 때 울고 싶습니다 .

마지막으로 Continuum Analytics는 일반 패키지 개발자가 패키지 사용자가 할 수있는 고유 한 사용자 정의 (빌드 된) 소프트웨어 스택을 만들 수 있도록 (무료) binstar.org (현재는 anaconda.org )를 호스팅합니다 conda install.


4
최종적으로, 타사 conda-forge 프로젝트 는 Anaconda 패키지 게시에 대한 업계 표준 접근 방식이되었습니다. 우리는 최근 다중 물리학 생물학 시뮬레이터를 위한 여러 개의 conda-forge-hosted 패키지발표했으며 그 과정을 충분히 추천 할 수는 없습니다. Conda-Forge에 새로운 레시피를 제출할 수있는 GitHub PR 기반 피어 리뷰 구성 요소가 있지만 Conda-Forge 자동화 측면에서 장점은 선행 투자 시간을 크게 능가합니다. 밤!
세실 커리

@CecilCurry Keras내 코드로 가져와 내 Mac에 아나콘다를 설치했으며 Keras 가 conda설치 및 pip설치되었습니다. 터미널에서 내 코드를 실행할 때 그래서, 내가 어떻게 알 않는다 keras(수입되는 pip하나 또는 conda하나)?
KPMG

25

더 혼동하지 말고 콘다 환경 내에서 pip를 사용하여 위의 일반적인 vs. 파이썬 특정 관리자 의견을 확인하십시오.

conda install -n testenv pip
source activate testenv
pip <pip command>

또한 환경의 기본 패키지에 pip를 추가하여 매번 존재하므로 위의 스 니펫을 따를 필요가 없습니다.


이것이 권장되지 않는다고 생각 했습니까?
endolith

8
콘다 내부에 핍을 사용하는 것이 좋습니다. conda를 사용하여 설치하는 것이 좋지만 conda 빌드가없는 패키지의 경우 pip를 사용하는 것이 좋습니다.
Bradley Kreider

2
nit : 문구가 될 것 같습니다 fully supported? fully recommended내 생각에 콘다 환경 내에서 콘다보다 핍을 사용하는 것이 낫다는 것을 의미합니다.
휴 퍼킨스

22

Conda for Data Science 기사에서 Continuum 웹 사이트로 인용 하십시오.

콘다 vs 핍

파이썬 프로그래머는 PyPI에서 패키지를 다운로드하고 요구 사항을 관리하기 위해 pip에 익숙 할 것입니다. conda와 pip는 모두 패키지 관리자이지만 매우 다릅니다.

  • Pip은 Python 패키지에만 적용되고 conda는 언어에 구애받지 않으므로 conda를 사용하여 모든 언어의 패키지를 관리 할 수 ​​있습니다. Pip은 소스에서 컴파일하고 conda는 바이너리를 설치하여 컴파일 부담을 제거합니다.
  • Conda는 기본적으로 언어에 구애받지 않는 환경을 만드는 반면 pip는 virtualenv를 사용하여 Python 환경 만 관리합니다. 항상 conda 패키지를 사용하는 것이 좋지만 conda에는 pip도 포함되므로 둘 중 하나를 선택할 필요가 없습니다. 예를 들어, conda 패키지는 없지만 pip를 통해 사용 가능한 python 패키지를 설치하려면 다음과 같이 실행하십시오.
conda install pip
pip install gensim

15

콘다 에서 인용 : 신화와 오해 (포괄적 인 설명) :

...

신화 # 3 : 콘다와 핍은 직접적인 경쟁자이다

현실 : Conda와 pip는 서로 다른 목적을 수행하며 소규모 작업 하위 집합 (즉, 격리 된 환경에 Python 패키지 설치)에서만 직접 경쟁합니다.

의미 핍, P IP 나는 nstalls P의 , ackages는 파이썬의 공식인가 한 패키지 관리자이며, 가장 일반적으로 파이썬 패키지 색인 (PyPI)에 게시 된 패키지를 설치하는 데 사용됩니다. pip와 PyPI는 모두 PPA (Python Packaging Authority)에서 관리하고 지원합니다.

간단히 말해서, pip는 Python 패키지의 범용 관리자입니다. conda는 언어에 구애받지 않는 크로스 플랫폼 환경 관리자입니다. 사용자에게는 가장 두드러진 차이점은 아마도 다음과 같습니다. pip는 모든 환경에 파이썬 패키지를 설치합니다. conda는 conda 환경 내에 모든 패키지를 설치합니다. 여러분이하고있는 모든 작업이 격리 된 환경에 파이썬 패키지를 설치하는 것이라면 conda와 pip + virtualenv는 대부분 상호 교환이 가능합니다. 고립 된 환경이란 시스템 파이썬 설치를 수정하지 않고 패키지를 설치할 수있는 conda-env 또는 virtualenv를 의미합니다.

신화 # 2를 따로 떼어 놓아도 Python 패키지 설치에만 집중한다면 conda와 pip는 다른 청중과 다른 목적에 봉사합니다. 예를 들어 기존 시스템 Python 설치 내에서 Python 패키지를 관리하려는 경우 conda는 도움이되지 않습니다. 설계 상으로는 conda 환경 내에서만 패키지를 설치할 수 있습니다. 예를 들어 외부 의존성 (NumPy, SciPy 및 Matplotlib이 일반적인 예)에 의존하는 많은 Python 패키지로 작업하고 이러한 의존성을 의미있는 방식으로 추적하려는 경우 pip는 설계 상으로는 도움이되지 않습니다. Python 패키지와 Python 패키지 만 관리합니다.

Conda와 pip는 경쟁자가 아니라 여러 사용자 그룹과 사용 패턴에 중점을 둔 도구입니다.


1
시장 포지셔닝 관점을 넘어서 이것이 사실인지 확실하지 않습니다. 예를 들어, 세 가지 유형의 설치를 제공하는 pytorch (conda, pip, source, pytorch.org )를 참조하십시오. conda
Hugh Perkins

2
"격리 된 환경에 Python 패키지 설치"는 대부분의 Python 개발자가 pip를 사용하는 주요 유형입니다.
Nick

@Nick 개발자가 이미 '그것'가상 환경에있을 때 아닌가요? pip는 가상 환경에서 작동하고 시스템에 설치하는 것처럼 패키지를 설치한다고 생각하지만 sanchos.s에 따르면 python 패키지 만 설치하고 기본 라이브러리는 신경 쓰지 않습니다. 내가 틀렸다면 누구든지 나를 수정하십시오.
Chan Kim

12

WINDOWS 사용자의 경우

"표준"패키징 도구 상황이 최근 개선되고 있습니다.

  • 파이피 자체에는 9 월 현재 휠 패키지의 48 %가 있습니다. 2015 년 11 월 (2015 년 5 월 38 %, 2014 년 9 월 24 %)

  • 휠 형식은 최신 Python 2.7.9에서 기본적으로 지원됩니다.

"standard"+ "tweaks"패키징 툴 상황도 개선되고 있습니다 :

  • http://www.lfd.uci.edu/~gohlke/pythonlibs 에서 거의 모든 과학 패키지를 휠 형식으로 찾을 수 있습니다 .

  • mingwpy 프로젝트는 언젠가 '컴파일'패키지를 Windows 사용자에게 제공하여 필요할 때 소스에서 모든 것을 설치할 수 있습니다.

"Conda"패키징은 시장에서 더 나은 상태를 유지하고 "표준" 개선 되어야 하는 영역을 강조합니다 .

(또한 표준 휠 시스템과 콘다 시스템 또는 빌드 아웃에서 종속성 사양 다중 노력은 매우 비판적이지 않습니다.이 모든 포장 '핵심'기술이 일종의 PEP를 통해 수렴 할 수 있다면 좋을 것입니다)



2

pip를 사용하여 iPython을 설치할 수 있습니까?

물론 둘 다 (페이지의 첫 번째 접근 방법)

pip install ipython

그리고 (세 번째 접근 방식, 두 번째 접근 방식 conda)

GitHub 또는 PyPI에서 IPython을 수동으로 다운로드 할 수 있습니다. 이 버전 중 하나를 설치하려면 압축을 풀고 터미널을 사용하여 최상위 소스 디렉토리에서 다음을 실행하십시오.

pip install .

있습니다 설치 공식적으로 권장하는 방법 .

이미 pip가있을 때 conda를 다른 Python 패키지 관리자로 사용해야하는 이유는 무엇입니까?

여기에 말했듯 :

특정 패키지가 필요하거나 한 프로젝트에만 해당되거나 프로젝트를 다른 사람과 공유해야하는 경우 conda가 더 적합 해 보입니다.

Conda, 핍 ( YMMV )을 능가

  • 비 파이썬 도구를 사용하는 프로젝트
  • 동료들과 공유
  • 버전 간 전환
  • 다른 라이브러리 버전의 프로젝트 간 전환

핍과 콘다의 차이점은 무엇입니까?

그것은 다른 사람들에 의해 광범위하게 대답됩니다.


1

pip 파이썬 전용

condaAnaconda + R 의존성 등과 같은 다른 과학 패키지에만 사용됩니다. 모두가 이미 Python과 함께 제공되는 Anaconda가 필요한 것은 아닙니다. Anaconda는 주로 기계 학습 / 딥 러닝 등을하는 사람들을위한 것입니다. 캐주얼 Python 개발자는 자신의 랩톱에서 Anaconda를 실행하지 않습니다.


간단한 설명이지만 Anaconda 웹 사이트로 직접 이동하여 Python 2.x 또는 3.x 배포판을 다운로드하는 방법을 배웠습니다. 왜? > 학생에게 필요한 모든 패키지가 포함되어 있기 때문입니다. Numpy, Scipy, matpliotlib, sklearn 등이 바로 이것이 정밀한 기본 세부 사항을 이해하는 데 차이가있는 이유입니다. 학생
Rene Duchamp

나는 이것이 현 시점의 오래된 대답이라는 것을 알고 있지만 Conda / Anaconda에 대해 작성한 것은 나에게 완전히 잘못된 것 같습니다.
AMC

0

나는 사소한 성격의 또 다른 차이점을 발견했을 수도 있습니다. 나는 파이썬 환경이 /usr아니라 오히려 /home있습니다. 그것에 설치하려면을 사용해야 sudo install pip합니다. 저에게는 바람직하지 않은 부작용 sudo install pip이 다른 곳에서 널리보고 된 것과 약간 달랐습니다. 그렇게 한 후에 , 설치된 패키지 를 가져 오기 위해 실행 python해야 sudo했습니다 sudo. 나는 그것을 포기하고 결국에 대한 권한이 없어도 정상적으로 가져온 sudo conda환경에 패키지를 설치 하는 데 사용할 수 있음을 발견 했습니다 . 난 사용 A가 깨진 수정 하지 않고 사용하는 것보다 나 . /usrsudopythonsudo condapipsudo pip uninstall pipsudo pip --upgrade install pip

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.