Czy Python ma system zarządzania pakietami / modułami, podobny do tego, jak Ruby ma rubygemy, gdzie możesz to zrobić gem install packagename
?
Podczas instalowania modułów Pythona widzę tylko odniesienia do python setup.py install
, ale to wymaga, abyś najpierw znalazł pakiet.
Odpowiedzi:
Niedawny postęp
Marzec 2014 : Dobra wiadomość! Python 3.4 jest dostarczany z Pip. Pip od dawna jest de facto standardowym menedżerem pakietów Pythona. Możesz zainstalować taki pakiet :
Wahey! To najlepsza cecha każdego wydania Pythona. Dzięki temu bogactwo bibliotek społeczności jest dostępne dla wszystkich. Nowicjusze nie są już wykluczani z korzystania z bibliotek społeczności z powodu zaporowej trudności konfiguracji.
Jednak nadal istnieje wiele wyjątkowych frustracji związanych z pakowaniem w Pythonie. W sumie sprawiają, że Python jest bardzo niezbyt zachęcający dla początkujących. Również długa historia zaniedbań (tj. Brak dostawy z menedżerem pakietów przez 14 lat z Pythona 2.0 do Pythona 3.3) wyrządziła szkody społeczności. Poniżej opiszę oba.
Niezwykłe frustracje
Ważne jest, aby zrozumieć, że chociaż doświadczeni użytkownicy są w stanie obejść te frustracje, stanowią one znaczące bariery dla osób, które nie znają Pythona. W rzeczywistości trudność i ogólna nieprzyjazna dla użytkownika może zniechęcić wielu z nich.
Witryna PyPI jest pomocna w zwalczaniu
Każdy język z menedżerem pakietów ma oficjalne (lub quasi-oficjalne) repozytorium, w którym społeczność może pobierać i publikować pakiety. Python ma indeks pakietów Pythona, PyPI. https://pypi.python.org/pypi
Porównajmy jego strony ze stronami RubyGems i Npm (menedżera pakietów Node).
rails
express
simplejson
Zobaczysz, że strony RubyGems i Npm zaczynają się od jednowierszowego opisu pakietu, a następnie dużych, przyjaznych instrukcji, jak go zainstalować.
Tymczasem biada każdemu nieszczęsnemu użytkownikowi Pythona, który naiwnie przegląda PyPI. Na https://pypi.python.org/pypi/simplejson/ nie znajdą takich pomocnych instrukcji. Istnieje jednak duży zielony link „Pobierz”. Przestrzeganie go nie jest nierozsądne. Aha, klikają! Ich przeglądarka pobiera
.tar.gz
plik. Wielu użytkowników systemu Windows nie może go nawet otworzyć, ale jeśli wytrwają, mogą w końcu go wyodrębnić, a następnie uruchomićsetup.py
i ostatecznie z pomocą Googlesetup.py install
. Niektórzy poddadzą się i wymyślą koło na nowo.Oczywiście wszystko to jest złe. Najprostszym sposobem zainstalowania pakietu jest poleceniem PIP. Ale PyPI nawet nie wspomniał o Pipie. Zamiast tego poprowadził ich archaiczną i nudną ścieżką.
Błąd: nie można znaleźć pliku vcvarsall.bat
Numpy to jedna z najpopularniejszych bibliotek Pythona. Spróbuj zainstalować go za pomocą Pipa, otrzymasz ten tajemniczy komunikat o błędzie:
Próba rozwiązania tego jednego z najpopularniejszych pytań dotyczących przepełnienia stosu: „ błąd: nie można znaleźć pliku vcvarsall.bat ”
Niewielu ludziom się to udaje.
Dla porównania, w tej samej sytuacji Ruby wyświetla ten komunikat, który wyjaśnia, co się dzieje i jak to naprawić:
Publikowanie pakietów jest trudne
Ruby i Nodejs są dostarczane z w pełni funkcjonalnymi menedżerami pakietów, Gem (od 2007 r.) I Npm (od 2011 r.), I pielęgnują wspólnoty udostępniania skupione wokół GitHub. Npm sprawia, że publikowanie pakietów jest tak proste, jak ich instalowanie, ma już 64 tys . Pakietów . RubyGems wyświetla 72 tys . Pakietów . Czcigodny indeks pakietów Pythona zawiera tylko 41k .
Historia
Latając w obliczu motta „ baterie w zestawie ”, Python był dostarczany bez menedżera pakietów do 2014 roku.
Aż do Pipa de facto standardem był rozkaz
easy_install
. To było żałośnie niewystarczające. Nie było polecenia do odinstalowania pakietów.Pip był ogromną poprawą. Miał większość funkcji Ruby's Gem. Niestety Pip był - do niedawna - ironicznie trudny do zainstalowania. W rzeczywistości problem pozostaje głównym pytaniem Pythona w Stack Overflow: „ Jak zainstalować pip w systemie Windows? ”
źródło
gem install X
po prostu wydaje się działać na wszystkich platformach. Jak więc poradzili sobie z tym w przypadku klejnotów, które wymagają kompilacji kodu C w systemie Windows?Indeks pakietów Pythona (PyPI) wydaje się być standardowy:
pip install MyProject
pip install --upgrade MyProject
pip install MyProject==1.0
Możesz zainstalować menedżera pakietów w następujący sposób:
Bibliografia:
źródło
Dla kontrastu jest też pip .
źródło
Jako programista Ruby i Perl oraz osoba ucząca się Pythona, nie znalazłem easy_install ani pip jako odpowiednika RubyGems lub CPAN.
Staram się, aby moje systemy programistyczne działały z najnowszymi wersjami modułów, gdy programiści je aktualizują, i zamrażam moje systemy produkcyjne na ustalonych wersjach. Zarówno RubyGems, jak i CPAN ułatwiają znajdowanie modułów, wymieniając dostępne elementy, a następnie instalując je i później aktualizując pojedynczo lub zbiorczo, jeśli zachodzi taka potrzeba.
easy_install i pip ułatwiają instalację modułu RAZ ZNALAZŁEM go przez wyszukiwanie w przeglądarce lub dowiedziałem się o nim w inny sposób, ale nie powiedzą mi, co jest dostępne. Mogę wyraźnie nazwać moduł, który ma zostać zaktualizowany, ale aplikacje nie powiedzą mi, co zostało zaktualizowane, ani nie zaktualizują wszystkiego zbiorczo, jeśli chcę.
Tak więc podstawowa funkcjonalność jest dostępna w pip i easy_install, ale brakuje niektórych funkcji, które chciałbym zobaczyć, które uczyniłyby je bardziej przyjaznymi i łatwiejszymi w użyciu oraz na równi z CPAN i RubyGems.
źródło
Istnieją co najmniej dwa, easy_install i jego następca pip .
źródło
Co najmniej od końca 2014 r. Należy rozważyć dystrybucję Anaconda Python firmy Continuum Analytics z menedżerem pakietów Conda . Rozwiązuje większość poważnych problemów, z którymi ludzie spotykają się w Pythonie w ogóle (zarządzanie różnymi wersjami Pythona, aktualizowanie wersji Pythona, zarządzanie pakietami, środowiska wirtualne, zgodność z Windows / Mac) w jednym spójnym pobraniu.
Pozwala zrobić wszystko, co chcesz w Pythonie, bez konieczności zmiany systemu. Moim kolejnym preferowanym rozwiązaniem jest pip + virtualenv, ale musisz albo zainstalować virtualenv w swoim systemie Python (a twój systemowy Python może nie być wersją, którą chcesz) lub skompilować ze źródła . Anaconda sprawia, że cały proces jest jednym kliknięciem przycisku, a także dodaje kilka innych funkcji.
źródło
To byłby easy_install .
źródło
easy_install
, najpierw sprawdź daty. To była ważna rada, gdy została udzielona prawie 7 lat temu . Nie wydaje mi się, żebyśmy odpowiadali na regularne odwiedziny w celu aktualizacji, więc obniżanie głosów jest głupie.Nazywa się to setuptools. Uruchamia się go za pomocą polecenia „easy_install”.
Katalog można znaleźć pod adresem http://pypi.python.org/
źródło
Nie widzę ani MacPorts, ani Homebrew wymienionych w innych odpowiedziach tutaj, ale ponieważ widzę je wspomniane gdzie indziej w Stack Overflow w przypadku powiązanych pytań, dodam własne 0,02 USD, które wielu ludzi wydaje się uważać za MacPorts nie tylko za pakiet menedżer pakietów w ogóle (na dzień dzisiejszy podają 16311 pakietów / portów, 2931 pasujących do "python", choć tylko dla komputerów Mac), ale także jako przyzwoity (może lepszy) menedżer pakietów dla pakietów / modułów Pythona:
Pytanie
„… jaką metodę używają programiści Mac Python do zarządzania swoimi modułami?”
Odpowiedzi
„MacPorts jest idealne dla Pythona na Macu”.
„Najlepszym sposobem jest użycie MacPorts”.
„Wolę MacPorts ...”
„Z moją konfiguracją MacPorts ...”
„Używam MacPorts do instalowania ... modułów innych firm śledzonych przez MacPorts”
SciPy
„Komputery Mac (w przeciwieństwie do Linuksa) nie są dostarczane z menedżerem pakietów, ale istnieje kilka popularnych menedżerów pakietów, które można zainstalować. Macports ...”
Nadal zastanawiam się, czy samemu używać MacPorts, ale w tej chwili skłaniam się w tym kierunku.
źródło
pip install <your_favorite_package>
W systemie Windows zainstaluj wtedy http://chocolatey.org/
Otwórz nowe okno cmd ze zaktualizowaną ścieżką PATH. Dalej, zrób
Potem możesz
źródło
Ponieważ nikt nie wspomniał tutaj o pipenv , chciałbym opisać moje poglądy, dlaczego wszyscy powinni go używać do zarządzania pakietami Pythona.
Jak wspomniał @ColonelPanic, istnieje kilka problemów z indeksem pakietów Python, a także z pip i virtualenv .
Pipenv rozwiązuje większość problemów z pip i zapewnia również dodatkowe funkcje.
Funkcje Pipenv
Pipenv ma zastąpić pip i virtualenv, co oznacza, że pipenv automatycznie utworzy oddzielne środowisko wirtualne dla każdego projektu, unikając w ten sposób konfliktów między różnymi wersjami Pythona / wersjami pakietów dla różnych projektów.
Jeśli pracowałeś wcześniej nad projektami w Pythonie, zdasz sobie sprawę, że te funkcje znacznie ułatwiają zarządzanie pakietami.
Inne polecenia
check
sprawdza luki w zabezpieczeniach i stwierdza, że obecne środowisko spełnia wymagania PEP 508. ( co moim zdaniem jest świetną funkcją, szczególnie po tym - złośliwe pakiety na PyPi )graph
pokaże wykres zależności zainstalowanych zależności.Więcej na ten temat przeczytasz tutaj - Pipenv .
Instalacja
Dokumentację instalacyjną znajdziesz tutaj
PS: Jeśli lubisz pracować z żądaniami pakietów Python , z przyjemnością dowiesz się, że pipenv jest autorstwa tego samego programisty Kennetha Reitza
źródło
W 2019 poezja jest menedżerem pakietów i zależności, którego szukasz.
https://github.com/sdispater/poetry#why
Jest nowoczesny, prosty i niezawodny.
źródło
Poezja jest tym, czego szukasz. Dba o zarządzanie zależnościami, środowiska wirtualne, bieganie.
źródło