[python] easy_install을 통해 pip를 사용하는 이유는 무엇입니까? [닫은]

트윗

얼굴을 찌르는 것을 좋아하지 않는 한 easy_install을 사용하지 마십시오. 핍을 사용하십시오.

easy_install 대신 pip를 사용하는 이유는 무엇입니까? PyPI 및 패키지 작성자에게 결함이 대부분 있지 않습니다. ? 작성자가 휴지통 소스 타르볼 (예 : 누락 된 파일, setup.py 없음)을 PyPI에 업로드하면 pip와 easy_install이 모두 실패합니다. 외관상의 차이점 외에도 위의 트윗과 같은 Python 사람들 이 easy_install보다 pip 를 강력하게 선호 하는 이유는 무엇입니까?

(커뮤니티가 관리하는 Distribute 패키지의 easy_install에 대해 이야기한다고 가정합니다)



답변

여기의 많은 답변은 2015 년에 구식입니다 ( 처음 Daniel Roseman 의 답변 은 그렇지 않지만). 현재 상태는 다음과 같습니다.

  • 이진 패키지는 이제 .whlPyPI뿐만 아니라 Christoph Gohlke의 Windows 용 확장 패키지 와 같은 타사 리포지토리에 휠 ( 파일) 로 배포됩니다 . pip바퀴를 다룰 수 있습니다;easy_install할 수 없습니다.
  • 가상 환경 (3.4에 내장되어 있거나 2.6 + / 3.1 +에 추가 될 수있는 virtualenv)은 매우 중요하고 중요한 도구가되었습니다 ( 공식 문서 에서 권장 됨 ). 그들은 pip상자 밖으로 포함 하지만 제대로 작동하지 않습니다easy_install .
  • distribute포함하는 것이 패키지는 easy_install더 이상 유지되지 않습니다. 개선 사항이에 setuptools다시 통합되었습니다 setuptools. 설치하려고하면 대신 distribute설치 setuptools됩니다.
  • easy_install 그 자체는 단지 준 유지됩니다.
  • 언팩 된 소스 트리, DVCS 저장소 등의 설치 pip보다 열등 했던 모든 사례 easy_install는 오래 전에 사라졌습니다. 당신은 할 수 있습니다 pip install ., pip install git+https://.
  • pippython.org의 공식 Python 2.7 및 3.4+ 패키지와 함께 제공되며 pip소스에서 빌드하면 부트 스트랩이 기본적으로 포함됩니다.
  • 패키지 설치, 사용 및 빌드에 관한 불완전한 다양한 문서가 Python Packaging User Guide 로 대체되었습니다 . Python 모듈 설치 에 대한 Python의 자체 문서는 이제이 사용자 안내서를 참조하고 명시 적으로 호출합니다.pip “선호하는 설치 프로그램”이라고 .
  • 다른 새로운 기능은 pip몇 년 동안 추가 되지 않을 것입니다 easy_install. 예를 들어, pip요구 사항 파일을 작성한 다음 각 측면에 단일 명령으로 설치하여 사이트 패키지를 쉽게 복제 할 수 있습니다. 또는 사내 개발에 사용하기 위해 요구 사항 파일을 로컬 저장소로 변환하십시오. 등등.

easy_install2015 년 에 사용해야 할 유일한 이유는 OS X 10.5-10.8과 함께 Apple의 사전 설치된 Python 버전을 사용하는 특별한 경우입니다. 10.5 이후 Apple은을 포함 easy_install했지만 10.10 부터는 여전히을 포함하지 않습니다 pip. 10.9 이상에서는 여전히을 사용해야하지만 10.5-10.8의 경우 get-pip.py몇 가지 문제가 있으므로 더 쉽습니다 sudo easy_install pip. (일반적으로 easy_install pip나쁜 생각입니다. OS X 10.5-10.8의 경우에만 수행하십시오.) 또한 10.5-10.8 includereadlineeasy_install kludge 하는 방법을 알고 있지만 pip그렇지 않은 방법을 포함 합니다. sudo easy_install readline당신이 그것을 업그레이드하려는 경우.


답변

Ian Bicking의 pip 소개 :

pip는 원래 다음과 같은 방법으로 easy_install을 개선하기 위해 작성되었습니다.

  • 모든 패키지는 설치 전에 다운로드됩니다. 결과적으로 부분적으로 완료된 설치가 발생하지 않습니다.
  • 콘솔에 유용한 출력이 표시되도록주의를 기울입니다.
  • 행동의 이유는 추적됩니다. 예를 들어 패키지를 설치하는 경우 pip는 해당 패키지가 필요한 이유를 추적합니다.
  • 오류 메시지가 유용해야합니다.
  • 코드는 비교적 간결하고 응집력이있어 프로그래밍 방식으로 쉽게 사용할 수 있습니다.
  • 패키지는 에그 아카이브로 설치할 필요가 없으며, 에그 메타 데이터를 유지하면서 평평하게 설치할 수 있습니다.
  • 다른 버전 제어 시스템 (Git, Mercurial 및 Bazaar)에 대한 기본 지원
  • 패키지 제거
  • 고정 된 요구 사항 세트를 정의하고 패키지 세트를 안정적으로 재현합니다.

답변

아직 언급되지 않은 다른 을 선호하는 이유 는 그것이 새로운 인기이며 앞으로도 계속 사용될 것이기 때문입니다.

The Hitchhiker ‘s Guide 의 패키징 현재 상태 섹션에서 패키징 v1.0 까지 아래의 인포 그래픽 은 나중에 setuptools / easy_install이 사라질 것임을 보여줍니다.

여기에 이미지 설명을 입력하십시오

Setuptools 와 easy_install이 새로운 hotness ( distributepip) 로 대체 될 것임을 보여주는 배포판 문서 의 또 다른 인포 그래픽입니다 . 하지만 핍은 여전히 새로운 섹시한 레이저입니다, 배포 샘플 과 합병 setuptools에 의 출시와 함께 2013 년 setuptools에 v0.7.

여기에 이미지 설명을 입력하십시오


답변

두 가지 이유가 더있을 수 있습니다.

  1. pip는 uninstall명령을 제공합니다

  2. 중간에 설치가 실패하면 pip는 깨끗한 상태를 유지합니다.


답변

요구 사항 파일.

진심으로, 나는 매일 virtualenv와 함께 이것을 사용합니다.


빠른 종점 관리 튜터리얼, 포크

요구 사항 파일을 사용하면 pip를 통해 설치된 모든 패키지의 스냅 샷을 작성할 수 있습니다. 이러한 패키지를 가상 환경에 캡슐화하면 코드베이스가 매우 특정한 패키지 세트를 처리하고 해당 코드베이스를 다른 사람들과 공유 할 수 있습니다.

Heroku의 문서에서 https://devcenter.heroku.com/articles/python에서

가상 환경을 만들고이를 사용하도록 셸을 설정합니다. (bash / * nix 지침)

virtualenv env
source env/bin/activate

이제이 쉘로 실행되는 모든 파이썬 스크립트는이 환경의 패키지 및 구성을 사용합니다. 이제 컴퓨터에 전역으로 설치할 필요없이이 환경에 로컬로 패키지를 설치할 수 있습니다.

pip install flask

이제 어떤 패키지가 설치되어 있는지에 대한 정보를 덤프 할 수 있습니다

pip freeze > requirements.txt

해당 파일을 버전 제어로 체크인 한 경우 다른 사람이 코드를 가져 오면 자체 가상 환경을 설정하고 다음을 사용하여 모든 종속성을 설치할 수 있습니다.

pip install -r requirements.txt

이런 식으로 지루한 자동화를 할 수 있다면 언제나 굉장합니다.


답변

pip는 바이너리 패키지를 설치하지 않으며 Windows에서 잘 테스트되지 않았습니다.

Windows는 기본적으로 컴파일러와 함께 제공되지 않으므로 종종 pip를 사용할 수 없습니다 . easy_install Windows 용 바이너리 패키지를 설치할 수 있습니다 .


답변

업데이트 : 일부 생각과는 달리 다른 방식으로 setuptools흡수 distribute되었습니다. setuptools최신 distutils변경 사항 및 휠 형식 이 최신 입니다. 따라서, easy_installpip 지금 동등한 다소있다.

출처 : http://pythonhosted.org/setuptools/merge-faq.html#why-setuptools-and-not-distribute-or-another-name