Dlaczego warto używać PIP zamiast łatwej instalacji? [zamknięte]
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 pytanieA 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ść)
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 - pakiet
distribute
, który zawierałeasy_install
, nie jest już utrzymywany. Jego ulepszenia w stosunku do {[8] } zostały z powrotem połączone wsetuptools
. Próba instalacjidistribute
spowoduje zainstalowaniesetuptools
. -
easy_install
sama w sobie jest tylko quasi-utrzymana. - wszystkie przypadki, w których
pip
być gorsze odeasy_install
- Instalowanie z rozpakowanego drzewa źródłowego, z repo DVCS, itp.- dawno już nie ma; Możnapip install .
,pip install git+https://
. -
pip
pochodzi z oficjalnych pakietów Pythona 2.7 i 3.4+ z python.org, apip
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ą weasy_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.
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
.
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ć.
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.
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.
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.
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:
-
Pip udostępnia polecenie
uninstall
Jeśli instalacja zawiedzie w środku, pip pozostawi cię w stanie czystym.
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" /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.
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
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
.
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
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