Dlaczego warto używać PIP zamiast łatwej instalacji? [zamknięte]

zamknięte . To pytanie jest oparte na opinii . Obecnie nie przyjmuje odpowiedzi.

chcesz poprawić to pytanie? Zaktualizuj pytanie, aby mogło być odpowiedź z faktami i cytatami przez edytując ten post .

Zamknięte 4 lata temu .

Popraw to pytanie

A tweet czyta:

Nie używaj easy_install, chyba że jak dźgnięcie się w twarz. Użyj pip.

Po co używać pip nad easy_install? Czy błąd Nie leży po stronie PyPI i autorów pakietów w większości ? Jeśli autor wgrywa gówniane źródło (np.: brakujące pliki, nie setup.py) do PyPI, wtedy zarówno pip, jak i easy_install zawiodą. Poza różnicami kosmetycznymi, dlaczego ludzie Pythona (jak w powyższym tweecie) wydają się mocno faworyzować Pipa nad easy_install?

(Załóżmy, że mówimy o easy_install z pakietu Distribute, który jest utrzymywany przez społeczność)

Author: KarSho, 2010-07-10

9 answers

Wiele z odpowiedzi tutaj są nieaktualne dla 2015 (chociaż początkowo zaakceptowany jeden z Daniel Roseman {35]} nie jest). Oto obecny stan rzeczy:

  • pakiety binarne są teraz dystrybuowane jako pliki wheels (.whl)-nie tylko na PyPI, ale także w zewnętrznych repozytoriach, takich jak Christoph Gohlke ' s Extension Packages for Windows . pip może obsługiwać koła; easy_install nie może.
  • [38]}środowiska wirtualne (które są wbudowane w 3.4 lub mogą być dodane do 2.6+/3.1+ z virtualenv) stały się bardzo ważnym i znaczącym narzędziem (i zalecane w The official docs ); zawierają pip po wyjęciu z pudełka, ale nawet nie działają poprawnie z easy_install.
  • pakiet distribute, który zawierał easy_install, nie jest już utrzymywany. Jego ulepszenia w stosunku do {[8] } zostały z powrotem połączone w setuptools. Próba instalacji distribute spowoduje zainstalowanie setuptools.
  • easy_install sama w sobie jest tylko quasi-utrzymana.
  • wszystkie przypadki, w których pip być gorsze od easy_install - Instalowanie z rozpakowanego drzewa źródłowego, z repo DVCS, itp.- dawno już nie ma; Można pip install ., pip install git+https://.
  • pip pochodzi z oficjalnych pakietów Pythona 2.7 i 3.4+ z python.org, a pip bootstrap jest domyślnie dołączony, jeśli budujesz ze źródła.
  • różne niekompletne fragmenty dokumentacji dotyczącej instalacji, używania i budowania pakietów zostały zastąpione przez Podręcznik Użytkownika pakietów Pythona . Własna dokumentacja Pythona na temat instalacji Moduły Pythona od teraz odwołują się do tego podręcznika użytkownika i jawnie wywołują pip jako "preferowany program instalacyjny".
  • inne nowe funkcje zostały dodane do pip przez lata, które nigdy nie będą w easy_install. Na przykład, pip ułatwia klonowanie pakietów witryny, budując plik wymagań, a następnie instalując go za pomocą jednego polecenia po każdej stronie. Możesz też przekonwertować plik z wymaganiami do lokalnego repo, aby wykorzystać go do wewnętrznego rozwoju. I tak dalej.

The only dobrym powodem, dla którego wiem o używaniu easy_install w 2015 roku, jest szczególny przypadek używania preinstalowanych wersji Pythona firmy Apple z OS X 10.5-10.8. Od wersji 10.5 Apple zawiera easy_install, ale od wersji 10.10 nadal nie zawiera pip. Z 10.9+, nadal należy używać get-pip.py, ale dla 10.5-10.8, to ma pewne problemy, więc jest łatwiej sudo easy_install pip. (Ogólnie rzecz biorąc, easy_install pip to zły pomysł; tylko dla OS X 10.5-10.8 chcesz to zrobić.) Także 10,5-10,8 obejmują readline w sposób, który easy_install umie kludować wokół, ale pip nie ma, więc chcesz również sudo easy_install readline, jeśli chcesz to uaktualnić.

 310
Author: abarnert,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:03:05

From Ian Bicking ' s own introduction to pip :

Pip został pierwotnie napisany w celu poprawy na easy_install w następujący sposób

  • wszystkie pakiety są pobierane przed instalacją. Częściowo zakończona instalacja nie występuje w wyniku.
  • zwracamy uwagę, aby wyświetlać przydatne dane wyjściowe na konsoli.
  • powody działań są na bieżąco. Na przykład, jeśli pakiet jest instalowany, pip śledzi, dlaczego ten pakiet został wymagane.
  • komunikaty o błędach powinny być przydatne.
  • kod jest stosunkowo zwięzły i spójny, dzięki czemu łatwiej jest go używać programowo.
  • Pakiety nie muszą być instalowane jako archiwa egg, mogą być instalowane płasko(zachowując metadane egg).
  • natywne wsparcie dla innych systemów kontroli wersji (Git, Mercurial i Bazaar)
  • Deinstalacja pakietów.
  • proste do zdefiniowania stałe zestawy wymagań i niezawodnie odtworzyć zbiór paczki.
 600
Author: Daniel Roseman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-06-20 09:12:55

Kolejnym-jeszcze nie wspomnianym-powodem faworyzowania pip jest to, że jest to nowa gorąca i będzie nadal używana w przyszłości.

Infografika poniżej-z sekcjiaktualny stan opakowania wThe Hitchhiker ' s Guide to Packaging v1.0 -pokazuje, że setuptools/easy_install zniknie w przyszłości.

Tutaj wpisz opis obrazka

Oto kolejna infografika z dokumentacji dystrybucji pokazująca, że Setuptools i easy_install zostanie zastąpiony przez nowy hotness - distribute i pip . Podczas gdy pip jest wciąż nowym hotness, Distribute połączyła się z Setuptools w 2013 roku wraz z wydaniem Setuptools v0.7.

Tutaj wpisz opis obrazka

 247
Author: Matthew Rankin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-02-05 19:26:36

Dwa powody, może być więcej:

  1. Pip udostępnia polecenie uninstall

  2. Jeśli instalacja zawiedzie w środku, pip pozostawi cię w stanie czystym.

 171
Author: Ned Batchelder,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-07-10 18:56:46

Pliki wymagań.

Poważnie, używam tego w połączeniu z virtualenv każdego dnia.


SZYBKI PORADNIK ZARZĄDZANIA ZALEŻNOŚCIAMI, LUDZIE

Pliki wymagań pozwalają na tworzenie migawek wszystkich pakietów, które zostały zainstalowane przez pip. Zamykając te pakiety w wirtualnym środowisku, możesz sprawić, że Twoja baza kodowa będzie działać z bardzo specyficznym zestawem pakietów i udostępni ją innym.

Z dokumentacji Heroku https://devcenter.heroku.com/articles/python

Tworzysz środowisko wirtualne i ustawiasz powłokę, aby z niego korzystać. (instrukcje bash/*Nix)

virtualenv env
source env/bin/activate

Teraz wszystkie skrypty Pythona uruchamiane z tą powłoką będą używać pakietów i konfiguracji tego środowiska. Teraz możesz zainstalować pakiet lokalnie w tym środowisku bez konieczności instalowania go globalnie na komputerze.

pip install flask

Teraz możesz zrzucić informacje o tym, które pakiety są instalowane z

pip freeze > requirements.txt

Jeśli sprawdziłem ten plik w kontroli wersji, gdy ktoś inny dostanie Twój kod, może skonfigurować własne środowisko wirtualne i zainstalować wszystkie zależności za pomocą:

pip install -r requirements.txt
/ Align = "left" /
 115
Author: Matthew Schinckel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-27 22:01:10

Pip nie instaluje pakietów binarnych i nie jest dobrze testowany na Windows.

Ponieważ Windows nie jest domyślnie wyposażony w kompilator, PIP często nie może być tam użyty. easy_install Może zainstalować pakiety binarne Dla Windows.

 82
Author: fuzzyman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-07-11 18:05:17

UPDATE: setuptools wchłonęła distribute w przeciwieństwie do odwrotnie, jak niektórzy sądzili. setuptools jest na bieżąco z najnowszymi zmianami distutils i formatem kół. Stąd easy_install i pip są teraz mniej więcej na równi.

Źródło: http://pythonhosted.org/setuptools/merge-faq.html#why-setuptools-and-not-distribute-or-another-name

 75
Author: user3341691,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-22 20:28:24

Jako uzupełnienie odpowiedzi fuzzymana:

Pip nie instaluje pakietów binarnych i nie jest dobrze testowany na Windows.

Ponieważ Windows nie jest domyślnie wyposażony w kompilator, PIP często nie może być używany tam. easy_install może instalować pakiety binarne Dla Windows.

Oto sztuczka na Windows:

  • Możesz użyć easy_install <package> do instalacji pakietów binarnych, aby uniknąć budowania binarnych

  • Możesz użyć pip uninstall <package> nawet jeśli używasz easy_install.

To jest tylko obejście, które działa dla mnie na windows. Właściwie zawsze używam pip, jeśli nie są zaangażowane żadne binaria.

Zobacz aktualny pip doku: http://www.pip-installer.org/en/latest/other-tools.html#pip-compared-to-easy-install

Zapytam na liście dyskusyjnej, co jest planowane.

Oto najnowsza aktualizacja:

Nowym obsługiwanym sposobem instalacji plików binarnych będzie wheel! On jeszcze nie w standardzie, ale prawie. Aktualna wersja jest nadal Alfa: 1.0. 0A1

Https://pypi.python.org/pypi/wheel

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

Przetestuję wheel tworząc instalator OS X dla PySide używając wheel zamiast jajek. Wrócę i Zdam o tym raport.

Cheers-Chris

Szybka aktualizacja:

Przejście do wheel jest prawie skończone. Większość pakietów obsługuje wheel.

Obiecałem zbudować koła dla PySide, i zrobiłem to zeszłego lata. Działa świetnie!

Podpowiedź: Kilku programistów nie udało się do tej pory obsługiwać formatu wheel, po prostu dlatego, że zapomnieli zastąp distutils przez setuptools. Często łatwo jest przekonwertować takie pakiety, zastępując to pojedyncze słowo w setup.py.

 25
Author: Christian Tismer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-13 19:02:55

Spotkałem się z jednym szczególnym przypadkiem, że musiałem użyć easy_install zamiast pip, albo muszę wyciągnąć kody źródłowe bezpośrednio.

Dla pakietu GitPython wersja w pip jest za stara, czyli 0.1.7, podczas gdy wersja z easy_install jest najnowsza, czyli 0.3.2.rc1.

Używam Python 2.7.8. Nie jestem pewien mechanizmu podkładu easy_install i pip, ale przynajmniej wersje niektórych pakietów mogą się różnić od siebie i czasami {[1] } jest tą Z nowszą wersją.

easy_install GitPython
 3
Author: Landys,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-25 03:22:52