Odpowiedzi:
Ta sama koncepcja, co .jar
plik w Javie, jest to .zip
plik z nazwą niektórych plików metadanych.egg
, służący do dystrybucji kodu jako pakietów.
W szczególności: wewnętrzna struktura jaj Python
„Jajo Pythona” to logiczna struktura zawierająca wydanie określonej wersji projektu Pythona, składająca się z jego kodu, zasobów i metadanych. Istnieje wiele formatów, których można użyć do fizycznego kodowania jaja Python, a inne można opracować. Jednak podstawową zasadą jaj Python jest to, że powinny one być możliwe do wykrycia i importowania. Oznacza to, że aplikacja Python powinna mieć możliwość łatwego i skutecznego sprawdzenia, jakie jaja są obecne w systemie, oraz zapewnienia, że zawartość żądanych jaj można importować.
.egg
Format jest dobrze nadaje się do dystrybucji i łatwej deinstalacji lub aktualizacji kodu, ponieważ projekt jest w zasadzie samowystarczalny w jednym katalogu lub pliku, unmingled z kodem lub zasobów innych projektach. Umożliwia także jednoczesną instalację wielu wersji projektu, dzięki czemu poszczególne programy mogą wybrać wersje, których chcą używać.
.egg
Plik jest formatem dystrybucji pakietów Pythona. To tylko alternatywa dla dystrybucji kodu źródłowego lub systemu Windows exe
. Ale zauważ, że dla czystej Python
,.egg
plik jest całkowicie cross-platform.
Sam .egg
plik jest zasadniczo .zip
plikiem. Jeśli zmienisz rozszerzenie na „zip
”, zobaczysz, że będą miały foldery w archiwum.
Ponadto, jeśli masz .egg
plik, możesz go zainstalować jako pakiet za pomocąeasy_install
Przykład: Aby utworzyć .egg
plik dla katalogu, powiedzmy, że mymath
sam może mieć kilka skryptów Python, wykonaj następujący krok:
# setup.py
from setuptools import setup, find_packages
setup(
name = "mymath",
version = "0.1",
packages = find_packages()
)
Następnie z terminalu wykonaj:
$ python setup.py bdist_egg
To wygeneruje wiele wyników, ale po zakończeniu zobaczysz, że masz trzy nowe foldery: build , dist i mymath.egg-info . Jedyny folder, na którym nam zależy, to folder dist, w którym znajdziesz swój .egg
plik,mymath-0.1-py3.5.egg
z domyślnym numerem wersji (instalacji) Pythona (mój tutaj: 3.5)
Źródło: blog biblioteki Python
Jajka w języku Python są sposobem na wiązanie dodatkowych informacji z projektem Python, który pozwala na sprawdzenie i zaspokojenie zależności projektu w czasie wykonywania, a także na dostarczenie wtyczek do innych projektów. Istnieje kilka formatów binarnych, które zawierają jaja, ale najpopularniejszym z nich jest format pliku zip .egg, ponieważ jest on wygodny do dystrybucji projektów. Obsługiwane są wszystkie formaty, w tym dane specyficzne dla pakietu, metadane dla całego projektu, rozszerzenia C i kod Python.
Najłatwiejszym sposobem instalacji i używania jaj Python jest użycie menedżera pakietów Python „Łatwa instalacja”, który znajdzie, pobierze, zbuduje i zainstaluje jajka; wystarczy, że podasz nazwę (i opcjonalnie wersję) projektu (projektów) Python, którego chcesz użyć.
Jajka Python mogą być używane z Python 2.3 i nowszymi oraz mogą być budowane przy użyciu pakietu setuptools (zobacz kod źródłowy Python Subversion dla kodu źródłowego lub stronę EasyInstall, aby uzyskać aktualne instrukcje instalacji).
Główne zalety Python Eggs to:
Umożliwiają narzędzia takie jak menedżer pakietów Python „Łatwa instalacja”
Pliki .egg są formatem „zero instalacji” dla pakietu Python; nie jest wymagany krok kompilacji ani instalacji, wystarczy umieścić je na PYTHONPATH lub sys.path i użyć ich (może wymagać zainstalowania środowiska wykonawczego, jeśli używane są rozszerzenia C lub pliki danych)
Mogą zawierać metadane pakietu, takie jak inne jajka, na których polegają
Pozwalają one na podzielenie „pakietów przestrzeni nazw” (pakietów zawierających tylko inne pakiety) na osobne dystrybucje (np. Zope. , Twisted. , Peak. *). Pakiety mogą być dystrybuowane jako osobne jaja, w przeciwieństwie do normalnych pakietów, które zawsze muszą być umieszczone pod tym samym katalog nadrzędny. Pozwala to na rozprowadzanie dużych pakietów monolitycznych jako osobnych komponentów).
Umożliwiają aplikacjom lub bibliotekom określenie potrzebnej wersji biblioteki, dzięki czemu można np. Wymagać („Twisted-Internet> = 2.0”) przed wykonaniem importu twisted.internet.
Są doskonałym formatem do dystrybucji rozszerzeń lub wtyczek do rozszerzalnych aplikacji i platform (takich jak Trac, który używa jaj do wtyczek od wersji 0.9b1), ponieważ środowisko wykonawcze jaj zapewnia proste interfejsy API do lokalizowania jaj i znajdowania ich reklamowanych punktów wejścia (podobne do koncepcji „punktu rozszerzenia” Eclipse).
Istnieją również inne korzyści wynikające ze znormalizowanego formatu, podobne do korzyści płynących z formatu „jar” Javy.
„Jajko” to importowany z jednego pliku format dystrybucji dla projektów związanych z Pythonem.
W „Szybkim przewodniku po jajach Python” zauważono, że „Jaja są dla Pytonów, tak jak słoiki dla Javy ...”
Jajka są bogatsze niż słoiki; przechowują interesujące metadane, takie jak szczegóły dotyczące licencji, zależności od wydania itp.