Co to jest jajo pytona?
Jestem nowy w Pythonie i próbuję zrozumieć, jak działają jego Pakiety. Przypuszczalnie eggs
to jakiś mechanizm pakowania, ale jaki byłby szybki przegląd roli, jaką odgrywają i może być trochę informacji o tym, dlaczego są przydatne i jak je tworzyć?
4 answers
Uwaga: opakowanie jaj zostało zastąpione opakowaniem kołowym.
Ten sam koncept co Plik .jar
w Javie, jest to plik .zip
z niektórymi plikami metadanych przemianowanymi na .egg
, służący do dystrybucji kodu jako pakiety.
W szczególności: struktura wewnętrzna jaj pytona
"Python egg" jest logiczną strukturą ucieleśniającą uwolnienie specyficzna wersja projektu Pythona, zawierająca jego kod, zasoby, i metadanych. Tam są wieloma formatami, które można wykorzystać do fizycznie zakodować jajko Pythona, a inne mogą być rozwijane. Jednakże, kluczową zasadą jaj pytona jest to, że powinny one być wykrywalne i importowalne. Oznacza to, że aplikacja Pythona powinna mieć możliwość łatwo i skutecznie dowiedzieć się, jakie jaja są obecne w systemie, a aby upewnić się, że pożądana zawartość jaj jest możliwa do importowania.
Format
.egg
jest dobrze dostosowany do dystrybucji i łatwego Deinstalacja lub uaktualnienie kodu, ponieważ projekt jest zasadniczo samowystarczalny w ramach jednego katalogu lub pliku, niezwiązany z żadnym kod lub zasoby innych projektów. Umożliwia również posiadanie zainstalowanych jednocześnie wielu wersji projektu, tak aby poszczególne programy mogą wybrać wersje, których chcą używać.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-10-16 19:27:22
Plik .egg
jest formatem dystrybucji pakietów Pythona. Jest to po prostu alternatywa dla dystrybucji kodu źródłowego lub Windows exe
. Należy jednak pamiętać, że dla pure Python
Plik .egg
jest całkowicie wieloplatformowy.
Plik .egg
jest zasadniczo plikiem .zip
. Jeśli zmienisz rozszerzenie na " zip
", zobaczysz, że będzie ono miało foldery wewnątrz archiwum.
Ponadto, jeśli Masz plik .egg
, możesz zainstalować go jako pakiet używając easy_install
Przykład:
Na Utwórz plik .egg
dla katalogu say mymath
, który sam może mieć kilka skryptów Pythona, 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 terminala do:
$ python setup.py bdist_egg
To wygeneruje wiele wyjść, ale po zakończeniu zobaczysz, że masz trzy nowe foldery: build, dist i mymath.jajko-info . Jedyny folder, na którym nam zależy to folder dist, W Którym Znajdziesz swój plik .egg
, mymath-0.1-py3.5.egg
Z Twój domyślny numer wersji Pythona (instalacja) (mój tutaj: 3.5)
Źródło: Blog Biblioteki Pythona
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-11 15:43:29
Jaja Pythona są sposobem łączenia dodatkowych informacji z projektem Pythona, który pozwala sprawdzać i spełniać zależności projektu w czasie wykonywania, a także pozwala projektom dostarczać wtyczki do innych projektów. Istnieje kilka formatów binarnych, które uosabiają jaja, ale najczęściej jest to '.format egg ' zipfile, ponieważ jest wygodny do dystrybucji projektów. Obsługa wszystkich formatów, w tym danych specyficznych dla pakietu, metadanych dla całego projektu, rozszerzeń C i Pythona kod.
Najprostszym sposobem na zainstalowanie i użycie Pythona eggs jest użycie Menedżera pakietów Pythona" Easy Install", który znajdzie, pobierze, zbuduje i zainstaluje dla Ciebie eggs; wszystko, co robisz, to powiesz mu nazwę (i opcjonalnie wersję) projektu Pythona, którego chcesz użyć.
Python eggs może być używany z Pythonem 2.3 i nowszymi, i może być zbudowany przy użyciu pakietu setuptools (patrz Python Subversion sandbox dla kodu źródłowego lub strona EasyInstall dla bieżącej instalacji instrukcje).
Podstawowe zalety jaj pytona to:
-
Umożliwiają one narzędzia takie jak" Easy Install " Python package manager
-
.pliki egg są formatem "zerowej instalacji" dla pakietu Pythona; nie jest wymagany krok kompilacji ani instalacji, po prostu umieść je na PYTHONPATH lub sys.ścieżka i korzystanie z nich (może wymagać zainstalowanego środowiska uruchomieniowego, jeśli używane są rozszerzenia C lub Pliki Danych)
-
Mogą one zawierać metadane pakietów, takie jak inne jaja, które zależą on
Pozwalają one na dzielenie" pakietów przestrzeni nazw " (pakietów, które zawierają tylko inne pakiety) na oddzielne dystrybucje (np. zope., , szczyt.* pakiety mogą być dystrybuowane jako osobne jaja, w przeciwieństwie do zwykłych pakietów, które muszą być zawsze umieszczone w tym samym katalogu nadrzędnym. Pozwala to na dystrybucję ogromnych, monolitycznych pakietów jako oddzielnych komponentów.)
Pozwalają aplikacjom lub bibliotekom określić potrzebną wersję biblioteki, dzięki czemu można np. wymagać ("Twisted-Internet>=2.0") przed wykonaniem importu twisted.internet.
Są świetnym formatem do dystrybucji rozszerzeń lub wtyczek do rozszerzalnych aplikacji i frameworków (takich jak Trac, który używa eggs dla wtyczek od 0.9b1), ponieważ środowisko uruchomieniowe egg zapewnia proste API do lokalizowania eggs i znajdowania reklamowanych punktów wejścia (podobnie do koncepcji Eclipse "extension point").
Istnieją również inne korzyści, które mogą pochodzą z posiadania znormalizowanego formatu, podobnego do zalet formatu " jar " Javy.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-13 01:07:01
" Egg " jest formatem dystrybucji importowalnej dla projektów związanych z Pythonem.
"The Quick Guide to Python Eggs" zauważa, że "jaja są dla pytonów tak jak słoiki są dla Javy..."
Jaja są w rzeczywistości bogatsze niż słoiki; zawierają ciekawe metadane, takie jak szczegóły licencji, zależności od wydania itp.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-26 05:26:14