programing

pip과 conda의 차이점은 무엇입니까?

sourcetip 2022. 9. 12. 11:59
반응형

pip과 conda의 차이점은 무엇입니까?

알고있어요pip는 python 패키지용 패키지 매니저입니다.하지만 IPython의 웹사이트에서 설치되는 것을 보았습니다.condaIPython을 설치합니다.

사용할 수 있습니까?pipIPython을 설치하시겠습니까?왜 사용해야 합니까?conda다른 python 패키지 매니저로서 이미 알고 있는 경우pip?

와의 차이는 무엇입니까?pip그리고.conda?

Conda 블로그에서 인용:

Python의 세계에 오랫동안 관여해 온 우리 모두는 pip, easy_install 및 virtualenv에 대해 알고 있지만 이러한 툴은 우리의 특정 요건을 모두 충족하지는 못했습니다.가장 큰 문제는 이들이 Python에 집중하면서 HDF5, MKL, LLVM 등 비 Python 라이브러리 의존성을 무시한다는 것입니다. 이들은 소스 코드에 setup.py을 가지고 있지 않으며 Python의 사이트 기반 디렉토리에 파일을 설치하지 않습니다.

Conda는 패키징 도구이자 설치 프로그램으로서pipPython 패키지와 Python 패키지 자체의 라이브러리 의존성을 처리합니다.Conda는 다음과 같은 가상 환경도 구축합니다.virtualenv한다.

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

Conda가 새로운 패키지 형식을 도입했기 때문에pip및 Conda를 교환할 수 있습니다.pipConda 패키지 형식을 설치할 수 없습니다.2개의 툴을 동시에 사용할 수 있습니다(설치하여).pip와 함께conda install pip)는 상호 운용도 하지 않습니다.

이 답변을 쓴 이후 Anaconda는 Conda와 Pip의 이해에 관한 새로운 페이지를 발행하고 있습니다.이 페이지도 다음과 같습니다.

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

더 나아가서

경우에 따라서는 Conda 패키지로 제공되지 않지만 PyPI에서 사용할 수 있으며 pip과 함께 설치할 수 있는 패키지가 필요합니다.이 경우 conda와 pip을 모두 사용해 보는 것이 좋습니다.

면책사항:이 답변은 10년 전의 상황을 설명하고 있습니다.당시 pip은 바이너리 패키지를 지원하지 않았습니다.Conda는 이진 패키지, 특히 C 확장자를 가진 데이터 과학 라이브러리를 구축하고 배포하는 것을 더 잘 지원하기 위해 특별히 만들어졌습니다.참고로, pip은 휠이 있는 휴대용 바이너리 패키지(2013년 1.4페이지)와 manylinux1 사양(2016년 3월 8.1페이지)에 대한 광범위한 지원을 받았습니다.자세한 내용은 최신 답변을 참조하십시오.

다음은 간단한 개요입니다.

삐삐

  • Python 패키지만.
  • 소스로부터 모든 것을 컴파일 합니다.EDIT: 이제 pip은 바이너리 휠을 설치합니다(사용 가능한 경우).
  • 핵심 Python 커뮤니티(즉, Python 3.4+에는 pip을 자동으로 부트스트랩하는 코드가 포함되어 있습니다)의 혜택을 받습니다.

콘도

  • Python 불가지론기존 패키지의 주안점은 Python용이며 Conda 자체는 Python으로 작성되어 있지만 C 라이브러리용 Conda 패키지, R 패키지, 기타 모든 것을 사용할 수 있습니다.
  • 바이너리를 인스톨 합니다.라는 도구가 있습니다.conda build소스에서 패키지를 빌드합니다만,conda install자체에서 이미 빌드된 Conda 패키지에서 물건을 설치합니다.
  • 외부. conda는 환경 및 패키지 관리자입니다.Continuum Analytics(현재의 Anaconda, Inc.)가 제공하는 Anaconda Python 배포판에 포함되어 있습니다.

Conda는 아나콘다 외부에서 독자적으로 개발 및 지원되고 있습니다.Conda-forge 인프라는 Anaconda, Inc.로부터 완전히 독립되어 있습니다.Anaconda, Inc.는 conda 패키지 오픈 소스 커뮤니티의 대규모 유지보수 팀 중 하나입니다.

conda는 Python으로 작성된 환경 매니저로 언어에 구애받지 않습니다.conda 환경 관리 기능은 venv, virtualenv, pipenv, pyenv 및 기타 Python 고유의 패키지 매니저에서 제공하는 기능을 포함합니다.기존 Python 설치 내에서 conda를 pip 설치로 사용할 수 있습니다(단, 기존 설치를 사용해야 하는 정당한 이유가 없는 한 이는 권장되지 않습니다).2022년 현재 Conda와 pip은 가상 환경 내에서 서로 패키지 관리 활동을 완전히 인식하지 못하고 있으며 Python 패키지 관리를 위해 상호 운용할 수 없습니다.

두 경우 모두:

  • Python으로 작성
  • 오픈 소스(conda는 BSD, pip는 MIT)

콘다의 처음 두 글머리 기호로 인해 많은 패키지에서 pip보다 유리합니다.소스로부터 인스톨 되기 때문에, 소스 코드를 컴파일 할 수 없는 경우는, 인스톨 하는 것이 귀찮을 가능성이 있습니다(이것은 특히 Windows 의 경우입니다만, 패키지가 어려운 C 또는 FORTRAN 라이브러리의 의존 관계를 가지는 경우에서도 마찬가지입니다).conda 는 바이너리로부터 인스톨 됩니다.즉, 누군가(예를 들면, Continuum)가 패키지를 컴파일 하는 어려운 작업을 이미 완료했기 때문에, 인스톨이 간단합니다.

독자적으로 패키지를 만드는 데 관심이 있는 경우에도 몇 가지 차이가 있습니다.예를 들어, pip은 setuptools 위에 구축되어 있는 반면 conda는 자체 포맷을 사용합니다(정적, Python 불가지론 등).

다른 답변은 자세한 내용을 기술하고 있지만, 저는 몇 가지 개괄적인 점을 강조하고 싶습니다.

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

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

conda 설계의 목적 중 하나는 사용자가 필요로 하는 소프트웨어 스택 전체의 패키지 관리를 용이하게 하는 것입니다.이 중 하나 이상의 파이썬 버전은 극히 일부일 수 있습니다.여기에는 선형대수, Windows에서의 믹스, 에디터, Hg, Git 등의 버전 관리 도구, 배포 관리가 필요한 하위 수준의 라이브러리가 포함됩니다.

버전 관리를 위해 pip을 사용하면 여러 python 환경을 전환하고 관리할 수 있습니다.

Conda를 사용하면 C 라이브러리, 컴파일러, 테스트 스위트, 데이터베이스 엔진 등 버전 번호가 다른 여러 범용 환경 간에 전환 및 관리할 수 있습니다.

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

Windows에서 pip을 사용하여 이러한 패키지를 컴파일하거나 디버깅에 실패했을 때를 생각하면 눈물이 납니다.pip install세션에 액세스 할 수 있습니다.

마지막으로 Continuum Analytics는 일반 패키지 개발자가 패키지 사용자가 사용할 수 있는 커스텀(빌트!) 소프트웨어 스택을 만들 수 있도록 하기 위해 binstar.org(무료)도 호스팅합니다.conda install부터.

더 이상 헷갈리지 않도록 conda 환경 내에서 pip을 사용하면 위의 일반적인 매니저와 python 고유의 매니저의 코멘트를 검증할 수 있습니다.

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

또한 모든 환경의 기본 패키지에 pip을 추가할 수 있으므로 위의 스니펫을 따를 필요가 없습니다.

Conda for Data Science 기사를 Continuum 웹사이트에 인용:

Conda vs pip

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

  • Pip은 Python 패키지에 특화되어 있으며 Conda는 언어에 구애받지 않습니다.즉, 소스에서 Pip 컴파일을 실행하거나 바이너리를 설치하거나 컴파일에 대한 부담을 없애기 위해 Conda를 사용할 수 있습니다.
  • Conda는 언어에 구애받지 않는 환경을 네이티브로 작성하는 반면 pip은 Virtualenv에 의존하여 Python 환경만 관리할 것을 권장합니다.콘다에는 항상 pip도 포함되어 있기 때문에 둘 중 하나를 선택할 필요가 없습니다.예를 들어 conda 패키지는 없지만 pip을 통해 사용할 수 있는 python 패키지를 설치하려면 다음과 같이 실행합니다.
conda install pip
pip install gensim

(2021 갱신)

TL;DR Python 3 이후 공식 패키지 매니저인 pip을 사용합니다.

삐삐

  • 기본

  • pip은 python의 기본 패키지 매니저입니다.

  • pip은 Python 3.0부터 내장되어 있습니다.

  • 사용방법:python3 -m venv myenv; source myenv/bin/activate; python3 -m pip install requests

  • 패키지는 공식 Python 저장소인 pypi.org에서 다운로드됩니다.

  • 사용 가능한 경우 미리 컴파일된 이진 파일(휠) 또는 소스(tar/zip 아카이브)를 설치할 수 있습니다.

  • 컴파일된 이진 파일은 많은 패키지가 타사 종속성 및 복잡한 빌드 체인과 혼합되어 있기 때문에 중요합니다.즉시 사용할 수 있도록 하려면 바이너리로 배포해야 합니다.

  • 고급.

  • pip은 실제로 모든 아카이브, 휠 또는 git/nrepo에서 설치할 수 있습니다.

  • ...디스크, HTTP URL 또는 개인 pypi 서버에 위치할 수 있습니다.

  • pip install git+https://github.com/psf/requests.git@v2.25.0예를 들어 (브런치에서의 패치 테스트에 도움이 될 수 있습니다.

  • pip install https://download.pytorch.org/whl/cpu/torch-1.9.0%2Bcpu-cp39-cp39-linux_x86_64.whl(이 휠은 Linux의 Python 3.9입니다).

  • 소스로부터 인스톨 하면, pip에 의해서 패키지가 자동적으로 빌드 됩니다.(항상 가능한 것은 아닙니다만, 구글 빌드 시스템 없이 TensorFlow를 구축해 보십시오:D).

  • 바이너리 휠은 python 버전과 OS에 따라 다를 수 있습니다. 이식성을 최대화하기 위해 manylinux 사양을 참조하십시오.

콘도

  • 라이선스를 취득하지 않는 한 상업용으로 Anaconda 또는 Anaconda 저장소의 패키지를 사용할 수 없습니다.

  • Conda는 Conda의 서드파티 패키지 매니저입니다.

  • 즉시 사용할 수 있는 대부분의 일반적인 데이터 과학 라이브러리를 포함하는 Python 배포판인 Anaconda에 의해 대중화되었습니다.

  • 아나콘다를 사용할 때는 콘다를 사용합니다.

  • 패키지는 아나콘다 레포에서 다운로드 됩니다.

  • 미리 컴파일된 패키지만 설치됩니다.

  • Conda에는 독자적인 패키지 형식이 있습니다.바퀴를 사용하지 않습니다.

  • conda install패키지를 설치합니다.

  • conda build패키지를 만듭니다.

  • conda는 python interpreter(및 python interpreter에 의존하는 다른 C 패키지)를 구축할 수 있습니다.그래서 아나콘다를 위해 통역사가 만들어지고 번들되는 거죠.

  • conda를 사용하면 Python 인터프리터를 설치 및 업그레이드할 수 있습니다(pp는 설치하지 않습니다).

  • 고급.

  • 지금까지 conda의 판매 포인트는 바이너리 패키지 구축과 설치를 지원하는 것이었습니다.pip은 바이너리 패키지를 잘 지원하지 않았기 때문입니다(휠과 manylinux2010 스펙까지).

  • 패키지 구축에 중점을 두고 있습니다.Conda는 광범위한 빌드 설정을 가지고 있으며 의존관계 및 빌드 체인을 처리하기 위해 광범위한 메타데이터를 저장합니다.

  • 일부 프로젝트에서는 Conda를 사용하여 복잡한 빌드 시스템을 시작하고 휠을 생성합니다. 휠은 pypi.org에 pip용으로 게시됩니다.

easy_install/installing

  • 이력 참조용입니다.사용하지 않다
  • 에그는 버려진 형태의 포장으로, 2010년대 중반까지 사용되었고 완전히 바퀴로 대체되었다.
  • egg는 zip 아카이브이며 파이썬 소스 파일 및/또는 컴파일된 라이브러리를 포함합니다.
  • 계란은 와 함께 사용됩니다.easy_install그리고 pip의 첫 번째 릴리즈입니다.
  • easy_installpip과 conda보다 앞선 또 다른 패키지 매니저였습니다.setuptools v58.3(2021년)에서 제거되었다.
  • pip vs conda처럼 많은 혼동을 일으켰습니다.d
  • 에그 파일은 로딩이 느리고 지정이 불량하며 OS에 따라 다릅니다.
  • 각 에그는 별도의 디렉토리에 설정되었습니다.import mypackage찾아야 할 것이다mypackage.py(설치된 라이브러리의 수는?) 수백 개의 디렉토리에 존재할 가능성이 있습니다.속도가 느리고 파일 시스템 캐시에 적합하지 않습니다.

지금까지 위의 세 가지 툴은 오픈 소스로 Python으로 작성되었습니다.그러나 conda의 배후에 있는 회사는 2020년에 상용 사용을 금지하기 위해 서비스 약관을 갱신했습니다. 주의하세요!

기능:더 많은 패키지를 로드하려면 압축이 필요하기 때문에 Python 인터프리터를 구축하는 데 엄격히 필요한 유일한 종속성은 zlib(zip 라이브러리)입니다.계란과 바퀴 패키지는 zip 파일입니다.

왜 이렇게 많은 선택지가 있지?

좋은 질문입니다.

Python과 컴퓨터의 역사를 살펴봅시다.=D

순수 파이썬 패키지는 이러한 패키지 중 하나에서 항상 잘 작동합니다.문제는 Python만의 패키지가 아니었다.

세계 대부분의 코드는 C에 의존합니다.이는 C로 작성된 Python 인터프리터에도 해당됩니다.이는 수많은 Python 패키지가 C 라이브러리 주변의 python 래퍼이거나 python/C/C++ 코드를 혼합한 프로젝트에 해당됩니다.

SSL, 압축, GUI(X11 및 Windows 서브시스템), 연산 라이브러리, GPU, CUDA 등과 관련된 모든 것...는 일반적으로 일부 C코드와 결합됩니다.

이것은 Python 라이브러리를 패키징하고 배포하는 데 문제를 일으킵니다. 왜냐하면 Python 코드는 어디에서나 실행할 수 있는 것이 아니기 때문입니다.라이브러리는 컴파일되어야 하며 컴파일러와 시스템 라이브러리와 서드파티 라이브러리가 필요합니다.컴파일이 완료되면 생성된 바이너리 코드는 컴파일된 특정 시스템과 파이썬 버전에서만 작동합니다.

원래 파이톤은 순수 피톤 라이브러리를 잘 배포할 수 있었지만 바이너리 라이브러리를 배포할 수 있는 지원은 거의 없었습니다.2010년 전후에는, 사용하려고 하면, 많은 에러가 발생합니다.numpy또는cassandra. 의존관계가 누락되어 소스를 다운로드하여 컴파일하지 못했습니다.또는 미리 빌드된 패키지(당시 에그일 가능성이 있음)를 다운로드하여 다른 시스템용으로 빌드되었기 때문에 사용 시 SEGFAULT와 함께 크래시됩니다.악몽이었다.

이 문제는 2012년부터 피프와 휠로 해결되었습니다.그런 다음 사람들이 툴을 채택하고 안정된 Linux 배포에 도구가 전파될 때까지 몇 년을 기다립니다(많은 개발자들은 이 툴에 의존합니다)./usr/bin/python). 바이너리 패키지의 문제는 2010년대 후반까지 확대되었습니다.

참고로 첫 번째 명령어는 다음과 같은 명령을 실행할 수 있습니다.python3 -m venv myvenv && source myvenv/bin/activate && pip install --upgrade pip setuptools오래된 시스템에서는 OS가 5년 전의 오래된 python+pip을 탑재하고 있기 때문에 버그가 있어 현재 패키지 포맷을 인식할 수 없습니다.

Conda는 병행하여 자체 솔루션을 개발했습니다.Anaconda는 데이터 과학 라이브러리를 바로 사용할 수 있도록(데이터 과학 = C 및 C++ 어디에나) 특별히 설계되었기 때문에, 이진 패키지인 conda를 구축하고 배포하기 위한 패키지 관리자를 고안해야 했습니다.

요즘 패키지 설치만 하면 됩니다.이것이 패키지를 설치하는 권장 방법이며 현재 버전의 Python에 내장되어 있습니다.

pip는 패키지 매니저입니다.

conda패키지 매니저이자 환경 매니저입니다.

상세:

enter image description here

의존관계조회

또한 Pip과 Conda는 환경 내 의존 관계가 어떻게 충족되는지에도 차이가 있습니다.패키지를 설치할 때 pip은 종속성을 재귀적인 시리얼 루프에 설치합니다.모든 패키지의 의존성이 동시에 충족되도록 하기 위해 노력하지 않습니다.따라서 주문 전에 설치된 패키지가 주문 후에 설치된 패키지와 호환되지 않는 종속성 버전을 가지고 있는 경우 환경이 미묘하게 파손될 수 있습니다.반면 콘다는 SAT(Afficiability) 솔버를 사용하여 환경에 설치된 모든 패키지의 모든 요구 사항을 충족하는지 확인합니다.이 검사는 시간이 더 걸릴 수 있지만 손상된 환경의 생성을 방지하는 데 도움이 됩니다.의존관계에 대한 패키지 메타데이터가 올바른 한 conda는 예측 가능한 작업 환경을 생성합니다.

레퍼런스

Conda에서 인용한 신화오해(포괄적인 설명):

...

신화 3: Conda와 pip은 직접적인 경쟁사입니다.

현실: Conda와 pip은 서로 다른 목적을 제공하며, 격리된 환경에 Python 패키지를 설치하는 작업 중 일부에서만 직접 경쟁합니다.

Pip Installs Packages의 약자인 Pip은 Python의 공식 승인 패키지 관리자이며 Python 패키지 색인(PyPI)에 게시된 패키지를 설치하는 데 가장 일반적으로 사용됩니다.pip 및 PyPI는 모두 Python Packaging Authority(PyPA)의 관리 및 지원을 받습니다.

즉, pip은 Python 패키지의 범용 매니저이며, conda는 언어에 구애받지 않는 크로스 플랫폼 환경 매니저입니다.사용자에게 가장 중요한 차이점은 다음과 같습니다.pip은 어떤 환경에도 python 패키지를 설치하고 conda는 어떤 환경에도 패키지를 설치합니다.격리된 환경 내에 Python 패키지를 설치하는 것 뿐이라면 Conda와 pip+virtualenv는 대부분 호환성이 있으므로 종속성 처리 및 패키지 가용성의 차이를 모듈화하십시오.격리된 환경이란 시스템 Python 설치를 변경하지 않고 패키지를 설치할 수 있는 conda-env 또는 virtualenv를 의미합니다.

신화 #2는 차치하고라도 Python 패키지 설치에만 집중한다면 conda와 pip은 다양한 대상과 목적을 제공합니다.예를 들어 기존 시스템 Python 설치 내에서 Python 패키지를 관리하고 싶다면 conda는 도움을 줄 수 없습니다.설계상 conda 환경 내에서만 패키지를 설치할 수 있습니다.예를 들어 외부 종속성에 의존하는 많은 Python 패키지(NumPy, SciPy 및 Matplotlib)를 사용하고 싶은 경우, 이러한 종속성을 의미 있는 방법으로 추적하는 동안 pip은 Python 패키지와 Python 패키지만을 관리할 수 없습니다.

Conda와 pip은 경쟁자가 아니라 다양한 사용자 그룹 및 사용 패턴에 초점을 맞춘 도구입니다.

WINDOWS 사용자용

"표준" 패키징 툴의 상황은 최근 개선되고 있습니다.

  • 2015년 9월 11일 현재 pypi 자체에서 휠 패키지는 48%(2015년 5월 38%, 9월 24%)이다.2014),

  • 휠 형식은 이제 최신 python 2.7.9에 따라 즉시 지원됩니다.

"표준" + "포장" 패키징 툴의 상황도 개선되고 있습니다.

  • 휠 포맷의 거의 모든 과학적 패키지는 http://www.lfd.uci.edu/에서 찾을 수 있습니다.

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

「Conda」패키지는, 서비스하는 시장에 대해서, 여전히 유효합니다.또, 「표준」이 개선될 필요가 있는 영역을 강조합니다.

(또한 표준 휠 시스템, 콘다 시스템, 또는 빌드아웃의 의존성 사양 멀티 effort는 그다지 피토닉하지 않습니다.이러한 패키징의 「코어」테크놀로지가, 일종의 PEP를 개입시켜 수렴할 수 있으면 좋겠다고 생각합니다.)

원래 질문에 답하자면
패키지를 설치하는 경우 PIP와 Conda는 동일한 작업을 수행하는 다른 방법입니다.둘 다 패키지를 설치하기 위한 표준 응용 프로그램입니다.주요 차이점은 패키지 파일의 원본입니다.

  • PIP/PyPI에는 더 많은 "실험적" 패키지 또는 더 새롭고 덜 일반적인 버전의 패키지가 포함됩니다.
  • Conda는 일반적으로 보다 잘 확립된 패키지 또는 버전을 가지고 있습니다.

중요한 주의사항:소스(pip 및 conda)를 모두 사용하여 동일한 환경에 패키지를 설치하는 경우 나중에 문제가 발생할 수 있습니다.

  • 환경을 재구축하는 것은 더욱 어려워진다
  • 패키지의 비호환성 수정이 복잡해지다

PIP 또는 Conda 중 하나의 응용 프로그램을 선택하여 패키지를 설치하고 해당 응용 프로그램을 사용하여 필요한 패키지를 설치하는 것이 가장 좋습니다.단, Conda 환경 내에서 pip을 사용해야 하는 많은 예외 또는 이유가 있으며 그 반대도 마찬가지입니다.예를 들어 다음과 같습니다.

  • 필요한 패키지가 한 개에만 있고 다른 패키지는 없는 경우.
  • 한 환경에서만 사용할 수 있는 특정 버전이 필요합니다.

iPython을 설치할 때 pip을 사용할 수 있습니까?

네, 둘 다 (페이지에서 첫 번째 접근법)

pip install ipython

(세 번째 접근법, 두 번째 접근법은conda)

IPython은 GitHub 또는 PyPI에서 수동으로 다운로드 할 수 있습니다.이러한 버전 중 하나를 설치하려면 포장을 풀고 터미널을 사용하여 최상위 소스 디렉토리에서 다음 작업을 수행합니다.

pip install .

공식적으로 권장되는 설치 방법입니다.

이미 pip을 가지고 있는데 왜 다른 python 패키지 매니저로 conda를 사용해야 합니까?

여기에 기재한 바와 같이:

특정 패키지가 필요한 경우(아마도 하나의 프로젝트에만 해당) 또는 프로젝트를 다른 사용자와 공유해야 하는 경우 conda가 더 적합합니다.

Conda는 PIP를 능가합니다(YMMV).

  • 비프로젝트 툴을 사용하는 프로젝트
  • 동료와의 공유
  • 버전 간 전환
  • 라이브러리 버전이 다른 프로젝트 간 전환

pip과 conda의 차이점은 무엇입니까?

그것은 다른 모든 사람들에 의해 광범위하게 답변되었다.

(2022 UPDATE) 이 답변은 @user5994461에 의해 위의 답변에서 파생되었습니다.

패키지 관리에 pip을 사용할 수 있습니다.Pip은 Python 3 이후 Python.org의 공식 내장 패키지 매니저입니다.

pip은 가상 환경 관리자가 아닙니다.

삐삐

  • 기본

  • pip은 python의 기본 패키지 매니저입니다.

  • pip은 Python 3.0부터 내장되어 있습니다.

  • 사용방법:python3 -m venv myenv; source myenv/bin/activate; python3 -m pip install requests

  • 패키지는 공식 Python 저장소인 pypi.org에서 다운로드됩니다.

  • 사용 가능한 경우 미리 컴파일된 이진 파일(휠) 또는 소스(tar/zip 아카이브)를 설치할 수 있습니다.

  • 컴파일된 이진 파일은 많은 패키지가 타사 종속성 및 복잡한 빌드 체인과 혼합되어 있기 때문에 중요합니다.즉시 사용할 수 있도록 하려면 바이너리로 배포해야 합니다.

  • 고급.

  • pip은 실제로 모든 아카이브, 휠 또는 git/nrepo에서 설치할 수 있습니다.

  • ...디스크, HTTP URL 또는 개인 pypi 서버에 위치할 수 있습니다.

  • pip install git+https://github.com/psf/requests.git@v2.25.0예를 들어 (브런치에서의 패치 테스트에 도움이 될 수 있습니다.

  • pip install https://download.pytorch.org/whl/cpu/torch-1.9.0%2Bcpu-cp39-cp39-linux_x86_64.whl(이 휠은 Linux의 Python 3.9입니다).

  • 소스로부터 인스톨 하면, pip에 의해서 패키지가 자동적으로 빌드 됩니다.(항상 가능한 것은 아닙니다만, 구글 빌드 시스템 없이 TensorFlow를 구축해 보십시오:D).

  • 바이너리 휠은 python 버전과 OS에 따라 다를 수 있습니다. 이식성을 최대화하기 위해 manylinux 사양을 참조하십시오.

콘도

  • conda는 오픈소스 커뮤니티에 의해 유지되는 오픈소스 환경 매니저 및 패키지 매니저입니다.Anaconda, Inc.와는 별개이며 상용 라이선스가 필요 없습니다.

  • Conda는 또한 Anaconda, Inc.의 인기 상업용 Python 유통인 Anaconda Navigator에 번들되어 있습니다.Anaconda)는 가장 일반적인 데이터 과학 및 즉시 사용할 수 있는 Python 개발자 라이브러리를 포함합니다.

  • Anaconda Navigator GUI를 사용할 때 conda를 사용합니다.

  • 패키지는 conda-forge, anaconda repo4 및 기타 공용 및 개인 conda 패키지 "channels"(일명 reposit)에서 다운로드할 수 있습니다.

  • 미리 컴파일된 패키지만 설치됩니다.

  • conda에는 독자적인 패키지 형식이 있습니다.바퀴를 사용하지 않습니다.

  • conda install패키지를 설치합니다.

  • conda build패키지를 만듭니다.

  • conda는 python interpreter(및 python interpreter에 의존하는 다른 C 패키지)를 구축할 수 있습니다.이것이 아나콘다 내비게이터를 위한 통역사가 만들어지고 번들되는 방법입니다.

  • conda를 사용하면 Python 인터프리터를 설치 및 업그레이드할 수 있습니다(pp는 설치하지 않습니다).

  • 고급.

  • 지금까지 conda의 판매 포인트 중 하나는 바이너리 패키지 구축과 설치를 지원하는 것이었습니다.pip은 바이너리 패키지를 잘 지원하지 않았기 때문입니다(휠과 manylinux2010 스펙까지).

  • 패키지 구축에 중점을 두고 있습니다.conda는 광범위한 빌드 설정을 가지고 있으며 의존관계 및 빌드 체인을 처리하기 위해 광범위한 메타데이터를 저장합니다.

  • 일부 프로젝트에서는 Conda를 사용하여 복잡한 빌드 시스템을 시작하고 휠을 생성합니다. 휠은 pypi.org에 pip용으로 게시됩니다.

  • conda는 가상 환경의 구축과 관리를 강조합니다. conda는 프로그래밍 언어에 구애받지 않는 가상 환경 매니저를 설계한 것입니다.conda는 npm, pip 및 기타 언어 패키지 매니저와 같은 다른 패키지 매니저를 설치하고 관리할 수 있습니다.

  • 아나콘다 내비게이터 패키지를 상업용으로 사용할 수 있습니까?새로운 언어는 개인 취미자, 학생, 대학, 비영리 단체 또는 200인 미만의 사업자가 사용하는 것을 허용하고 있으며, 그 외 모든 사용은 상업적인 것으로 간주되므로 아나콘다와의 비즈니스 관계를 필요로 한다.(2020년 10월 28일 현재)

  • 대규모 개발자 조직(종업원 수 200명 이상)인 경우 라이선스를 취득하지 않는 한 상업용으로 Anaconda 또는 패키지를 사용할 수 없습니다.

  • Conda-forge 저장소에서 적절한 오픈 소스 패키지를 가져와 사용하기 위해 Anaconda, Inc.의 상용 라이선스가 필요하지 않습니다.개발자는 콘다 단조 인프라스트럭처에서 제공되는 패키징 툴을 사용하여 자유롭게 콘다 패키지를 작성할 수 있습니다.

easy_install/installing

  • 이력 참조용입니다.사용하지 않다
  • 에그는 버려진 형태의 포장으로, 2010년대 중반까지 사용되었고 완전히 바퀴로 대체되었다.
  • egg는 zip 아카이브이며 파이썬 소스 파일 및/또는 컴파일된 라이브러리를 포함합니다.
  • 계란은 와 함께 사용됩니다.easy_install그리고 pip의 첫 번째 릴리즈입니다.
  • easy_installpip과 conda보다 앞선 또 다른 패키지 매니저였습니다.setuptools v58.3(2021년)에서 제거되었다.
  • pip vs conda처럼 많은 혼동을 일으켰습니다.d
  • 에그 파일은 로딩이 느리고 지정이 불량하며 OS에 따라 다릅니다.
  • 각 에그는 별도의 디렉토리에 설정되었습니다.import mypackage찾아야 할 것이다mypackage.py(설치된 라이브러리의 수는?) 수백 개의 디렉토리에 존재할 가능성이 있습니다.속도가 느리고 파일 시스템 캐시에 적합하지 않습니다.

기능:더 많은 패키지를 로드하려면 압축이 필요하기 때문에 Python 인터프리터를 구축하는 데 엄격히 필요한 유일한 종속성은 zlib(zip 라이브러리)입니다.계란과 바퀴 패키지는 zip 파일입니다.

왜 이렇게 많은 선택지가 있지?

좋은 질문입니다.

Python과 컴퓨터의 역사를 살펴봅시다.=D

순수 파이썬 패키지는 이러한 패키지 중 하나에서 항상 잘 작동합니다.문제는 Python만의 패키지가 아니었다.

세계 대부분의 코드는 C에 의존합니다.이는 C로 작성된 Python 인터프리터에도 해당됩니다.이는 수많은 Python 패키지가 C 라이브러리 주변의 python 래퍼이거나 python/C/C++ 코드를 혼합한 프로젝트에 해당됩니다.

SSL, 압축, GUI(X11 및 Windows 서브시스템), 연산 라이브러리, GPU, CUDA 등과 관련된 모든 것...는 일반적으로 일부 C코드와 결합됩니다.

이것은 Python 라이브러리를 패키징하고 배포하는 데 문제를 일으킵니다. 왜냐하면 Python 코드는 어디에서나 실행할 수 있는 것이 아니기 때문입니다.라이브러리는 컴파일되어야 하며 컴파일러와 시스템 라이브러리와 서드파티 라이브러리가 필요합니다.컴파일이 완료되면 생성된 바이너리 코드는 컴파일된 특정 시스템과 파이썬 버전에서만 작동합니다.

원래 파이톤은 순수 피톤 라이브러리를 잘 배포할 수 있었지만 바이너리 라이브러리를 배포할 수 있는 지원은 거의 없었습니다.2010년 전후에는, 사용하려고 하면, 많은 에러가 발생합니다.numpy또는cassandra. 의존관계가 누락되어 소스를 다운로드하여 컴파일하지 못했습니다.또는 미리 빌드된 패키지(당시 에그일 가능성이 있음)를 다운로드하여 다른 시스템용으로 빌드되었기 때문에 사용 시 SEGFAULT와 함께 크래시됩니다.악몽이었다.

이 문제는 2012년부터 피프와 휠로 해결되었습니다.그런 다음 사람들이 툴을 채택하고 안정된 Linux 배포에 도구가 전파될 때까지 몇 년을 기다립니다(많은 개발자들은 이 툴에 의존합니다)./usr/bin/python). 바이너리 패키지의 문제는 2010년대 후반까지 확대되었습니다.

참고로 첫 번째 명령어는 다음과 같은 명령을 실행할 수 있습니다.python3 -m venv myvenv && source myvenv/bin/activate && pip install --upgrade pip setuptools오래된 시스템에서는 OS가 5년 전의 오래된 python+pip을 탑재하고 있기 때문에 버그가 있어 현재 패키지 포맷을 인식할 수 없습니다.

Continuum Analytics(나중에 Anaconda, Inc.로 명칭 변경)는 자사의 솔루션(Anaconda Navigator로 출시)을 병행하여 개발했습니다.Anaconda Navigator는 데이터 과학 라이브러리(데이터 과학 = C 및 C++)를 바로 사용할 수 있도록 특별히 설계되었기 때문에, 바이너리 패키지를 구축하고 배포하기 위한 패키지 매니저를 고안하여 환경 매니저 conda에 내장했습니다.

요즘에는 패키지가 설치되면 보통 기능만 합니다.pip은 현재 버전의 Python에 내장된 패키지를 설치하는 데 권장되는 방법입니다.

pipPython 전용

condaAnaconda + R 의존관계 등 기타 과학 패키지 전용입니다.모든 사람이 이미 Python과 함께 제공되는 Anaconda를 필요로 하는 것은 아닙니다.아나콘다는 주로 머신러닝/딥러닝 등을 하는 분들을 대상으로 하고 있습니다.캐주얼 Python dev는 노트북에서 Anaconda를 실행하지 않습니다.

사소한 성격의 차이점을 하나 더 발견했을지도 몰라요.내 python 환경은/usr보다는/home뭐 그런 거.이 시스템에 설치하려면 다음 명령을 사용해야 합니다.sudo install pip저에겐 원치 않는 부작용이sudo install pip다른 곳에서 널리 보도된 것과 약간 달랐다: 그렇게 한 후, 나는 도망쳐야 했다.python와 함께sudo어느쪽인가를 Import 하려면 ,sudo- 패키지 설치.난 그걸 포기했고 결국엔 그걸 사용할 수 있다는 걸 알았어sudo conda아래 환경에 패키지를 설치하다/usr그리고 나서 필요 없이 정상적으로 수입되었다.sudo에 대한 허가.python심지어 사용하기도 했다.sudo conda부러진 곳을 고치다pip사용하는 것보다sudo pip uninstall pip또는sudo pip --upgrade install pip.

언급URL : https://stackoverflow.com/questions/20994716/what-is-the-difference-between-pip-and-conda

반응형