Odpowiednik Maven dla Pythona [zamknięty]

146

Jestem programistą Java / początkującym w Pythonie i brakuje mi funkcji Mavena, szczególnie zarządzania zależnościami i automatyzacji kompilacji (mam na myśli, że nie budujesz, ale jak utworzyć pakiet do wdrożenia?)

Czy istnieje odpowiednik Pythona do osiągnięcia tych funkcji?
Uwaga: używam Pythona 2.x.

Dzięki.

Enno Shioji
źródło

Odpowiedzi:

70

Python używa distutils i setuptools do tworzenia zależności i pakowania.

Oto samouczek, który wyjaśnia podstawy: http://docs.activestate.com/activepython/3.2/diveintopython3/html/packaging.html

Krótko mówiąc, będziesz mieć plik setup.py, który zawiera informacje o zależnościach i kompilacji skryptu / instalacji, i możesz z nim budować jajka, paczki z dystrybucją, paczki binarne itp.

Daniel Kluev
źródło
6
Odkąd Mark Pilgrim, zmarły na prąd, zamknął to miejsce, oto lustro w statusie aktywnym .
jiggy
2
Poleciłbym zaktualizować to, aby wskazywało na The Python Packaging User Guide, ponieważ jest to teraz autorytatywny przewodnik.
kojiro
38

Nie ma bezpośredniego dopasowania. Jednak najbliższy możesz uzyskać:

  • zc.buildout : Może konfigurować zamknięte środowiska, pobierać / obsługiwać zależności, inicjować skrypty itp. Opiera się również na wtyczkach (lub „przepisach”, jak je nazywają). Użyłem go kilka lat temu, kiedy był w fazie beta, prawdopodobnie od tego czasu ewoluował. Jest krzywa uczenia się, tak jak w przypadku Mavena, ale jest też najpotężniejsza.

Inne oferty to podzbiory Maven / zc.buildout:

Prawdopodobnie znasz skrypty Ant i powłoki, więc możesz sprawdzić również te narzędzia Pythona:

  • Fabric or Paver : uruchamianie zadań w wierszu poleceń z dodatkowymi smakami. Otaczają twoje tradycyjne wykonanie wiersza poleceń w Pythonie i pozwalają na zarządzanie różnymi zadaniami w bardziej wydajny sposób (zależności zadań, interpretacja danych wyjściowych, uruchamianie poleceń na zdalnym serwerze itp.). W zasadzie nic, czego nie można by zrobić ze skryptami powłoki, ale w Pythonie jest to znacznie mniej tajemnicze.
Tuukka Mustonen
źródło
14

Chciałbym zwrócić uwagę na PyBuilder, który jest silnie zainspirowany przez maven, ale używa Pythona zamiast XML do konfiguracji, więc w rzeczywistości jest czytelny, IMHO.

Istnieje wtyczka do zarządzania zależnościami (używa pip pod maską i rozróżnia zależności kompilacji i środowiska wykonawczego) i, podobnie jak maven, możesz przejść przez pełny cykl życia kompilacji za pomocą jednego polecenia.

user245678
źródło
9

W przypadku wdrożenia, oprócz distutils / setuptoos, spójrz także na pakiet pip (używa setuptools poniżej). Może cofnąć nieudane instalacje, a także odinstalować (brakuje czegoś w easy_install / setuptools). Ponadto można określić zależności za pomocą pliku tekstowego wymagań.

ars
źródło
6

Warto używać virtualenv do tworzenia samodzielnego środowiska projektowego i używania pip / easy_install do zależności zarządzania.

Ning Sun
źródło
7
To smutne
:)