Tweet brzmi:
Nie używaj easy_install, chyba że lubisz dźgać się w twarz. Użyj pip.
Dlaczego warto korzystać z pip zamiast easy_install? Czy wina nie leży głównie w PyPI i autorach pakietów ? Jeśli autor prześle archiwum źródłowe crap (np. Brakujące pliki, brak pliku setup.py) do PyPI, zarówno pip, jak i easy_install zakończą się niepowodzeniem. Poza różnicami kosmetycznymi, dlaczego ludzie Python (jak w powyższym tweecie) wydają się zdecydowanie faworyzować pip nad easy_install?
(Załóżmy, że mówimy o easy_install z pakietu dystrybucyjnego, który jest zarządzany przez społeczność)
python
pip
setuptools
easy-install
pypi
Sridhar Ratnakumar
źródło
źródło
setuptools
nie jest częścią Python 3, ponieważpip
jest i jest to jedyna część, której potrzebują użytkownicy końcowi. (A programiści, którzy chcą rozpowszechniać na PyPI, mogą oczywiściepip install setuptools
i wszystko, czego mogą chcieć.)Odpowiedzi:
Wiele odpowiedzi tutaj jest nieaktualnych w 2015 r. (Choć pierwotnie przyjęta odpowiedź Daniela Rosemana nie jest). Oto obecny stan rzeczy:
.whl
pliki) - nie tylko na PyPI, ale w repozytoriach stron trzecich, takich jak pakiety rozszerzeń Christopha Gohlke dla Windows .pip
może obsługiwać koła;easy_install
Nie mogę.virtualenv
) stały się bardzo ważnym i widocznym narzędziem (i zalecane w oficjalnych dokumentach ); zawierają one popip
wyjęciu z pudełka, ale nawet nie działają poprawnie zeasy_install
.distribute
Pakiet, który zawieraeasy_install
nie jest już utrzymywany. Jego ulepszeniasetuptools
zostały ponownie włączonesetuptools
. Próbując zainstalowaćdistribute
po prostu zainstalowaćsetuptools
zamiast.easy_install
sam jest jedynie quasi utrzymany.pip
były gorsze -easy_install
instalowanie z rozpakowanego drzewa źródłowego, z repozytorium DVCS itp. - już dawno minęły; możnapip install .
,pip install git+https://
.pip
pochodzi z oficjalnymi pakietami Python 2.7 i 3.4+ z python.org, apip
bootstrap jest domyślnie dołączony, jeśli budujesz ze źródła.pip
jako „preferowany program instalacyjny”.pip
Przez lata dodawano inne nowe funkcje , które nigdy nie będą dostępneeasy_install
. Na przykładpip
ułatwia klonowanie pakietów witryn, budując plik wymagań, a następnie instalując go za pomocą jednego polecenia z każdej strony. Lub przekonwertować plik wymagań na lokalne repozytorium, którego można użyć do wewnętrznego opracowywania. I tak dalej.Jedynym dobrym powodem, o którym wiem, że używam go
easy_install
w 2015 r., Jest szczególny przypadek korzystania ze wstępnie zainstalowanych wersji Apple w języku Python z systemem OS X 10.5–10.8. Od 10.5 Apple obejmujeeasy_install
, ale od 10.10 nadal nie obejmująpip
. W wersji 10.9+ powinieneś nadal używaćget-pip.py
, ale w przypadku wersji 10.5-10.8 ma to pewne problemy, więc jest łatwiejsudo easy_install pip
. (Ogólnie rzecz biorąc,easy_install pip
to zły pomysł; chcesz to zrobić tylko w systemie OS X 10.5–10.8). Ponadto 10.5–10.8 obejmująreadline
w sposób, któryeasy_install
wie, jak się poruszać, alepip
nie, więc chcesz teżsudo easy_install readline
jeśli chcesz to uaktualnić.źródło
pip
.easy_install -U pip
lubeasy_install3 -U pip
.easy_install
” To nie było moje doświadczenie, chociaż nie próbowałem od dłuższego czasu, ponieważ koła dominują teraz. Jednak pliki binarne Christopha Gohlkego były dystrybuowane jako jaja wykonywalne. Wywołanieeasy_install
ich było jedynym sposobem na zainstalowanie tych pakietów w środowisku wirtualnym i nigdy nie spowodowało to zgagi. W jaki sposób nieeasy_install
działa już z wirtualnymi env?Z własnego wprowadzenia Iana Bickinga do pipa :
źródło
easy_install pip
ponadsudo apt-get install python-pip
?sudo apt-get
Ubuntu / Debian instaluje pakiety Pythona, podczas/usr/lib/python/dist-packages
gdysudo pip
lubsudo easy_install
instaluje się w nich/local/lib/python/site-packages
i niestety pakiety Debian / Ubuntu często mają różne nazwy, których pip nie zna. Najlepszym rozwiązaniem IMHO jest użycie virtualenv ipip
zainstalowanie tam swoich pakietów.Kolejnym - jak dotąd niewymienionym - powodem faworyzowania PIPa jest to, że jest to nowy upał i będzie nadal używany w przyszłości.
Poniższa infografika - z sekcji Bieżący stan pakowania w Przewodniku autostopowicza po pakowaniu 1.0 - pokazuje, że setuptools / easy_install zniknie w przyszłości.
Oto kolejna infografika z dokumentacji dystrybucji, która pokazuje, że Setuptools i easy_install zostaną zastąpione przez nową funkcjonalność - distribute i pip . Podczas gdy pip jest wciąż nowym trendem, Distribute połączył się z Setuptools w 2013 roku wraz z wydaniem Setuptools v0.7.
źródło
distribute
Łączy się ponowniesetuptools
.pip
Pracuje.packaging
(distutils2
) nie jest zawarte w Pythonie 3.3 .Z dwóch powodów może być ich więcej:
pip udostępnia
uninstall
poleceniejeśli instalacja zakończy się niepowodzeniem w środku, pip pozostawi cię w czystym stanie.
źródło
WYMAGANIA.
Poważnie, używam tego w połączeniu z virtualenv każdego dnia.
SZYBKIE ZARZĄDZANIE ZALEŻNOŚCIĄ PODRĘCZNIK, FOLKI
Pliki wymagań pozwalają utworzyć migawkę wszystkich pakietów, które zostały zainstalowane przez pip. Dzięki enkapsulacji tych pakietów w środowisku wirtualnym możesz sprawić, że twoja baza kodów będzie działać na bardzo specyficznym zestawie pakietów i będzie mogła dzielić się tą bazą z innymi.
Z dokumentacji Heroku https://devcenter.heroku.com/articles/python
Tworzysz środowisko wirtualne i ustawiasz powłokę, aby go używała. (instrukcje bash / * nix)
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.
Teraz możesz zrzucić informacje o tym, z którymi pakietami są instalowane
Jeśli zaznaczyłeś ten plik do kontroli wersji, gdy ktoś inny dostanie Twój kod, może skonfigurować własne środowisko wirtualne i zainstalować wszystkie zależności za pomocą:
Za każdym razem, gdy możesz zautomatyzować takie nudy, jest to niesamowite.
źródło
pipreqs
do uzyskania pliku wymagania.txt. Da tylko biblioteki związane z projektem, w którym wywołujesz pipreqs, więc wymagania.txt będą oparte na projekcie, a nie na virtualenv.pip nie instaluje pakietów binarnych i nie jest dobrze przetestowany w systemie Windows.
Ponieważ system Windows domyślnie nie jest wyposażony w kompilator, często nie można z niego korzystać. easy_install może instalować pakiety binarne dla systemu Windows.
źródło
wheel
Binarnego formatu dystrybucji sprawia, że to możliwe. Wiele pakietów innych firm z modułami rozszerzeń C jest teraz dystrybuowanych, ponieważ koła zbudowane dla różnych platform, a pip może je automatycznie zainstalować. Patrz na przykład pythonwheels.comAKTUALIZACJA:
setuptools
pochłonęła,distribute
a nie na odwrót, jak niektórzy sądzili.setuptools
jest na bieżąco z najnowszymidistutils
zmianami i formatem koła. Stądeasy_install
ipip
są mniej więcej na równi teraz.Źródło: http://pythonhosted.org/setuptools/merge-faq.html#why-setuptools-and-not-distribute-or-another-name
źródło
easy_install
wciąż jest tym, czym był przez długi czas, a pip ogromnie go poprawia.easy_install
jest tylko częściąsetuptools
i prawdopodobnie jednym z najgorszych, dlatego pip chce go zastąpić.Jako dodatek do odpowiedzi fuzzymana:
Oto sztuczka w systemie Windows:
możesz użyć
easy_install <package>
do zainstalowania pakietów binarnych, aby uniknąć budowania pliku binarnegomożesz użyć
pip uninstall <package>
nawet jeśli użyłeś easy_install.To tylko obejście, które działa dla mnie w systemie Windows. Właściwie zawsze używam pip, jeśli nie są zaangażowane żadne pliki binarne.
Zobacz aktualne pip doku: http://www.pip-installer.org/en/latest/other-tools.html#pip-compared-to-easy-install
Oto najnowsza aktualizacja:
Będzie nowy obsługiwany sposób instalowania plików binarnych
wheel
! Nie jest jeszcze w standardzie, ale prawie. Obecna wersja to wciąż wersja alfa: 1.0.0a1https://pypi.python.org/pypi/wheel
http://wheel.readthedocs.org/en/latest/
Przetestuję
wheel
, tworząc zaPySide
pomocą instalatora OS Xwheel
zamiast jaj. Wrócę i poinformuję o tym.na zdrowie - Chris
Szybka aktualizacja:
Przejście do
wheel
jest prawie zakończone. Większość pakietów obsługujewheel
.Obiecałem zbudować koła
PySide
i zrobiłem to latem ubiegłego roku. Działa świetnie!WSKAZÓWKA: Kilka deweloperzy nie udało do tej pory obsługuje formatu koła, po prostu dlatego, że zapomnieć zastąpić
distutils
przezsetuptools
. Często łatwo jest przekonwertować takie pakiety, zastępując to jedno słowo wsetup.py
.źródło
Właśnie spotkałem jeden specjalny przypadek, którego musiałem użyć
easy_install
zamiastpip
, lub muszę pobrać kody źródłowe bezpośrednio.Na opakowaniu
GitPython
, w wersjipip
jest zbyt stary, co jest0.1.7
, a jeden zeasy_install
to najnowsza, który jest0.3.2.rc1
.Używam
Python 2.7.8
. Nie jestem pewien co do mechanizmu podkładaniaeasy_install
ipip
, ale przynajmniej wersje niektórych pakietów mogą się od siebie różnić, a czasemeasy_install
ta z nowszą wersją.źródło