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 pipsudo 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 ( distributepip) 로 대체 될 것임을 보여주는 배포판 문서 의 또 다른 인포 그래픽입니다 . 하지만 핍은 여전히 새로운 섹시한 레이저입니다, 배포 샘플 과 합병 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_installpip 지금 동등한 다소있다.

출처 : 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.