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


936

트윗 읽

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

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

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


74
이 질문을보기 전에 "easy_install을 사용하지 말고 pip를 사용하십시오"라고 말하여 관련이없는 질문에 대답했습니다. 이제 내가 왜 그런 말을했는지 궁금합니다.
— Daniel Roseman

21
나는 여전히 pip를 실패하게하는 패키지를 실행하지만 easy_install은 잘 처리합니다. 그래서 이것에 대해서도 궁금합니다.
— kwatford

5
pyobjc-core는 easy_install에서는 작동하지만 pip에서는 작동하지 않는 패키지의 예입니다.
— Marc Abramowitz

5
4 년 후 파이썬으로 돌아와서 포장 상태는 엉망이되었습니다. 2014 년이 되어서야 상황은 더욱 악화되었습니다. 내가 이해하는 것에서 공식 파이썬 문서는 이것을 잊어 버렸지 만 setuptools는 distutils를 흡수 했지만 파이썬 3의 일부 는 아니며 핍은 세 번째 바퀴처럼 매달려 있습니다 (pun 의도).
— Andriy Drozdyuk 2016 년

3
@drozzy : 당신은 가능한 한 최악의 시간에 돌아 왔습니다. 핵심 개발자 그룹이 문제를 해결하는 데 관여해야하는 엉망이됐다고 결정한 직후. setuptools파이썬 3의 일부가 아니기 때문에 pip최종 사용자에게 필요한 유일한 부분입니다. (그리고 PyPI에 배포하고자하는 개발자는 물론 원하는 pip install setuptools모든 것을 할 수 있습니다.)
— abarnert

답변:


304

여기의 많은 답변은 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당신이 그것을 업그레이드하려는 경우.


9
@drozzy : 아마도. 그러나 다니엘 로즈 맨의 시대는 끝이없는 반면, 5 년 후에는 다른 모든 답변만큼 오래된 답변이 될 것입니다. 또한 파이썬 커뮤니티가 왜pip 개입하여 뒤쳐 졌는지 보여주는 5 살짜리 대답을 지적 할 수 없다면 내 대답이 좋지 않을 것 입니다.
— abarnert

2
pip의 일부 패키지 버전은 버그가 많았으며 pip 자체 업그레이드에 실패했습니다. 아이러니하다고 생각하든 그렇지 않든간에 가장 쉬운 해결책은 easy_install -U pip또는 easy_install3 -U pip입니다.
— analytik

"하지만 제대로 작동하지 않습니다 easy_install" "지금은 바퀴가 우세하기 때문에 한동안 시도하지 않았지만 이것은 내 경험이 아니 었습니다. 그러나 Christoph Gohlke의 바이너리는 실행 가능한 계란으로 배포되었습니다. easy_install그것들을 호출 하는 것은 패키지를 가상 환경에 설치할 수 있는 유일한 방법이며, 결코 가슴 앓이를주지 않았습니다. easy_install더 이상 가상 환경에서 작동 하지 않는 방법은 무엇 입니까?
— jpmc26

599

Ian Bicking의 pip 소개 :

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

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

63
"오류 메시지"의 장점은 특히 새로운 사용자에게 큰 영향을줍니다. Easy-install은 치명적인 오류처럼 보이는 수십 가지를 뱉어내는 것으로 유명합니다. 핍은 단순히 그 말을 먼저 생략합니다.
— Brandon Rhodes

1
@Glyph easy_install pip이상을 사용하면 이점 이 sudo apt-get install python-pip있습니까?
— 데니스

2
패키지 기반 배포에서 virtualenv 외부에서 easy_install을 사용하지 마십시오. workaround.org/easy-install-debian
— Federico

11
@Dennis : 사용하는 경우 sudo apt-get우분투 / 데비안에서 파이썬 패키지를 설치합니다 /usr/lib/python/dist-packages반면 sudo pip나 sudo easy_install에 설치됩니다 /local/lib/python/site-packages유감스럽게도 데비안 / 우분투 패키지는 종종 핍에 익숙하지 않은 것을 다른 이름이 있습니다. 가장 좋은 솔루션 IMHO는 virtualenv를 사용하고 pip패키지를 전체적으로 설치하는 것입니다.
— Mark Mikofski

2
업데이트가 필요합니다.
— Andriy Drozdyuk 2016 년

248

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

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

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

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

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


47
Infographics FTW
— WineSoaked

34
두 번째 그래픽 인 OTOH는 1 년 동안 구식입니다. 배포는 수명이 다한 후 distutils2로 대체됩니다 (3.3으로 시작하는 Python 표준 라이브러리에도 있음). pysetup이라는 기본 설치 프로그램이 part 또는 distutils2로 제공되며 pip는 앞으로 distutils2 위에 추가 기능을 계속 제공 할 것입니다.
— Éric Araujo

7
세상에 정말 고마워 나는 몇 년 동안 파이썬 패키징으로 혼란스러워했으며 반 정식 경로를 보는 것이 마음이 듭니다.
— aaron


21
이 "답변"은 너무 오래되어서 잘못된 것조차 재미 있지 않습니다.
— 아무도


116

요구 사항 파일.

진심으로, 나는 매일 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

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


1
이것은 또한 setuptools의 일부인 것 같습니다 : pythonhosted.org/setuptools/…
— Andriy Drozdyuk

pipreqsrequirements.txt 파일을 얻는 데 사용해야 합니다. pipreq를 호출하는 프로젝트와 관련된 라이브러리 만 제공하므로 requirements.txt는 virtualenv가 아닌 프로젝트를 기반으로합니다.
— SeF

83

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

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


3
흥미 롭습니다. pip는 또한 Zope 사람들이 사용하는 setuptools "extras"기능을 지원하지 않습니다.
— Sridhar Ratnakumar

1
pip가 사전 빌드 된 바이너리를 설치하도록 주장하는 대신 Windows에 gcc 환경이 필요하다는 표시입니까?
— WineSoaked

18
Windows에 사용하는 "올바른"컴파일러는 Visual Studio입니다 (2008 필자는 최신 버전의 Python). 무료 버전이라도 이것을 설치하는 것은 번거 롭다. Windows에 C 확장을 설치 하는 일반적인 방법은 사전 컴파일 된 바이너리에서입니다. easy_install은 이것을 지원하지만 pip는 지원하지 않습니다.
— fuzzyman

8
이것이 여전히 easy_install을 사용하는 주된 이유입니다.
— 랜디 Syring

14
위의 답변이 제공된 이후 몇 년 동안 pip가 바이너리 패키지를 Windows 또는 다른 플랫폼에 설치할 수 없다는 것은 더 이상 사실이 아닙니다. wheel진 분산 형식은 가능하게합니다. C 확장 모듈이있는 많은 타사 패키지도 다양한 플랫폼 용으로 제작 된 휠로 배포되며 pip는 자동으로 설치할 수 있습니다. 예를 들어, pythonwheels.com
— Ned Deily

76

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

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


5
왜 이것이 더 많이지지되지 않습니까? 대답은 너무 구식입니다!
— Andriy Drozdyuk 2016 년

5
네, 최고의 답변은 극단적으로 구식입니다
— WKordos

2
따라서 easy_install과 pip는 이제 거의 같은 수준에 있습니다. 이것은 말이되지 않습니다. easy_install여전히 오랜 시간이 지났고 핍은 엄청나게 향상되었습니다. easy_install단지의 일부 setuptools와 핍의 목표는 그것을 대체 왜 최악의 것들 중 틀림없이 하나.
— Piotr Dobrogost

25

fuzzyman의 답변 외에도

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

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

Windows의 요령은 다음과 같습니다.

  • easy_install <package>바이너리 빌드를 피하기 위해 바이너리 패키지를 설치 하는 데 사용할 수 있습니다

  • pip uninstall <package>easy_install을 사용해도 사용할 수 있습니다 .

이것은 Windows에서 나를 위해 작동하는 해결 방법 일뿐입니다. 실제로 바이너리가 포함되어 있지 않으면 항상 pip를 사용합니다.

현재 pip doku를 참조하십시오 : http://www.pip-installer.org/en/latest/other-tools.html#pip-compared-to-easy-install

메일 링리스트에 그 계획이 무엇인지 물어볼 것입니다.

최신 업데이트는 다음과 같습니다.

바이너리를 설치하는 새로운 지원 방법은 wheel! 아직 표준은 아니지만 거의입니다. 현재 버전은 여전히 ​​알파입니다 : 1.0.0a1

https://pypi.python.org/pypi/wheel

http://wheel.readthedocs.org/en/latest/

계란 대신 사용할 wheelOS X 설치 프로그램을 만들어 테스트하겠습니다 . 돌아와서 이것에 대해보고합니다.PySidewheel

건배-크리스

빠른 업데이트 :

로의 전환 wheel이 거의 끝났습니다. 대부분의 패키지가 지원하고 wheel있습니다.

나는 바퀴를 만들겠다고 약속했다 PySide 지난 여름에 그랬습니다. 잘 작동합니다!

힌트 : 몇몇 개발자는로 교체 distutils하는 것을 잊었 기 때문에 휠 형식을 지원하지 못했습니다 setuptools. 종종이 단일 단어를에서 대체하여 이러한 패키지를 쉽게 변환 할 수 setup.py있습니다.


2
위의 업데이트-대기가 거의 끝났다고 생각합니다 ;-)
— Christian Tismer

2014 년 봄에 바퀴가 표준이되었으므로 이것을 다시 업데이트해야합니다. 실제로, 오래된 스레드는 무한히 변경되어서는 안된다고 생각합니다. 그러나 질문의 ​​원래 이유가 사라 졌을 때 공평합니까?
— Christian Tismer

3

easy_install대신 대신 사용해야하는 특별한 경우를 만났 pip거나 소스 코드를 직접 가져와야합니다.

패키지 GitPython에있는 버전 pip이다, 너무 오래 0.1.7에서 한 동안, easy_install어떤 최신입니다 0.3.2.rc1.

나는 사용하고있다 Python 2.7.8 있습니다. easy_installand 의 언더 레이 메커니즘에 대해서는 잘 모르겠지만 pip적어도 일부 패키지의 버전은 서로 다를 수 있으며 때로는 easy_install최신 버전의 패키지 일 수도 있습니다 .

easy_install GitPython

6
지금 이것을 확인하고 (타임 스탬프 참조) 더 이상 사실이 아닙니다 .pip와 easy_install이 모두 동일하게 작동하여 오늘 GitPython 0.3.5가되었습니다. (OS X Yosemite에서만 테스트 됨). 당신의 플랫폼은 무엇입니까? 오해의 소지가 있으므로 항목을 업데이트하십시오.
— Christian Tismer
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.