2015-07-14 18 views
18

Korzyść z kół nad jajkami jest wyraźna (patrz sekcja: dlaczego nie jajko? https://pypi.python.org/pypi/wheel).Opakowanie w pythonie: koła a tarball (tar.gz)

Jednak nie jest dla mnie całkowicie jasne, jaka jest zaleta używania kółek nad tar.gz. Być może brakuje mi czegoś oczywistego, jak "oni są tacy sami". Jak widzę, oba mogą być instalowane bezpośrednio przy użyciu pip (nawet w Windows), mają podobny rozmiar i gdy pakowanie wymaga podobnego wysiłku. To brzmi dla mnie jak pytania, jakie możesz uzyskać uzasadniając metodologię pakowania.

EDYTOWANIE: Właśnie znalazłem przykład, w którym tar.gz może być lepszy niż koła. CherryPy (https://pypi.python.org/pypi/CherryPy) dostarcza kółka tylko dla Pythona 3.x, więc jeśli chcesz mieć lokalne repozytorium do obsługi CherryPy dla zależności Pythona 2.7 i 3.x, wydaje się, że bardziej sensowne jest przechowywanie archiwum. Czy to jest poprawne? (Wystarczy dodać kilka „case oparte” uzasadnieniu do dyskusji)

Odpowiedz

6

Ten odpowiedział za mnie (bezpośrednio od PEP koła):

Python potrzebuje formatu pakietu, który jest łatwiejszy do zainstalowania niż sdist. Pakiety sdist w języku Python są zdefiniowane przez i wymagają distutils i setuptools budują systemy, uruchamiają dowolny kod do kompilacji i instalacji, i ponownie kompilują, kodują tak, aby można go było zainstalować w nowym virtualenv . Ten system łączenia build-install jest powolny, trudny do utrzymania i utrudnia innowacje zarówno w systemach kompilacji, jak i instalatorach.

Koło próbuje zaradzić tym problemom, zapewniając prostszy interfejs między systemem kompilacji a instalatorem. Format binarny koła binarnego uwalnia instalatorów od konieczności posiadania informacji o systemie kompilacji , oszczędza czas, amortyzując czas kompilacji wielu instalacji, i eliminuje konieczność instalowania systemu kompilacji w środowisku docelowym .

https://www.python.org/dev/peps/pep-0427/#rationale

zanotować archiwów mówimy o tym, co określa się mianem „sdists” powyżej.

1

Od Python Wheels

Zalety koła

• Szybsza instalacja do czystej Python i rodzimych pakietów przedłużających C.
• Unika wykonywania niepożądanych kodów podczas instalacji. (Avoids setup.py)
• Instalacja rozszerzenia C nie wymaga kompilatora w systemie Windows ani OS X.
• Umożliwia lepsze buforowanie podczas testowania i ciągłej integracji.
• Tworzy pliki .pyc w ramach instalacji, aby upewnić się, że odpowiadają używanemu interpreterowi python.
• Bardziej spójne instalacje na różnych platformach i maszynach.

Upewnij się, że kółko jest zainstalowane.

pip install wheel 
+0

są wszystkie punkty rzeczy, których tarballs nie może zrobić? (Mogę z łatwością powiedzieć, że potrzebujesz "dodatkowego" oprogramowania do kół w maszynie z Linuksem, a na przykład tarball) –

+0

Nie zawsze wiem, co jest w archiwum, nawet po otwarciu archiwum, w tym samym stopniu co wiedzieć, co znajduje się w pliku .whl, który ma "po prostu działać" i jest to dla mnie dużą zaletą, gdy używam pip, który często nie działa "po prostu". – karel

+1

Czy mógłbyś pójść nieco głębiej w tym punkcie? jak widzę, kiedy patrzę na koło i tarball, oba mają zapinaną na zamek paczkę i dodatkową magię do pakowania. Nawet ja mogłem powiedzieć, że w archiwum mogę zobaczyć licencję właśnie tam, podczas gdy nie mogę go znaleźć w kole (dość ważny punkt podczas wykonywania komercyjnego softwr). Obaj mogą ukryć coś niepożądanego, dlatego nie dostaję "sprawiedliwej pracy". (BTW, lubię koła, ale potrzebuję solidnego uzasadnienia) –

Powiązane problemy