Hva er fordelene med emballasje din python bibliotek / søknad som .egg fil?

stemmer
25

Jeg har lest noen om .egg filer og jeg har lagt merke til dem i min lib, men hva er fordeler / ulemper ved å bruke da som utvikler?

Publisert på 06/09/2008 klokken 23:35
kilden bruker
På andre språk...                            


6 svar

stemmer
30

Fra Python Enterprise Application Kit samfunnet :

"Egg er å Pythons som Jars skal Java ..."

Python egg er en måte for bunting ytterligere informasjon med en Python-prosjektet, som gjør at prosjektets avhengigheter som skal sjekkes og fornøyd under kjøring, så vel som tillater prosjekter for å gi plugins for andre prosjekter. Det er flere binære formater som legemlig egg, men den vanligste er '.egg' zipfile format, fordi det er en praktisk ett for distribusjon av prosjekter. Alle de formater støtte, inkludert pakkespesifikke data, prosjektbasis metadata, C utvidelser og Python-kode.

De viktigste fordelene med Python Egg er:

  • De gjør det mulig verktøy som "Easy Install" Python pakkebehandleren

  • .egg filer er en "installasjon null" format for en Python-pakken; ikke bygge eller installere trinnet er nødvendig, bare sette dem på PYTHONPATH eller sys.path og bruke dem (kan kreve runtime installert hvis C utvidelser eller datafiler brukes)

  • De kan inneholde pakken metadata, slik som de andre eggene de er avhengige av

  • De tillater "navnerom pakker" (pakker som bare inneholder andre pakker) til å bli delt inn i separate fordelinger (f.eks Zope. , Vridd. , Peak. * Pakker kan være fordelt som separate egg, i motsetning til vanlig pakker som alltid må plasseres under de samme ordnet katalog. Dette gjør at det nå er store monolittiske pakker som skal distribueres som separate komponenter.)

  • De lar programmer eller biblioteker for å angi den nødvendige versjonen av et bibliotek, slik at du kan for eksempel kreve ( "Twisted-Internett> = 2,0") før du gjør en import twisted.internet.

  • De er en stor format for distribusjon av utvidelser eller plugins til utvidbar applikasjoner og rammeverk (som Trac, som bruker egg for plugins som av 0.9b1), fordi egget runtime gir enkle APIer for å lokalisere egg og finne sine annonserte inngangspunkter (tilsvar til Eclipse "forlengelse point" konseptet).

  • Det er også andre fordeler som kan komme fra å ha et standardisert format, lik fordelene med Java er "jar" format.

-Adam

Svarte 06/09/2008 kl. 23:39
kilden bruker

stemmer
5

Ett egg i seg selv er ikke bedre enn en skikkelig kilde utgivelse. Den gode delen er avhengigheten håndtering. Som debian eller rpm pakker, kan du si at du er avhengig av andre egg, og de vil bli installert automatisk (gjennom pypi.python.org ).

En annen kommentar: egget formatet i seg selv er et binært pakket format. Normale python pakker som består av bare python kode er best fordelt som "kilde utgivelser", så "python setup.py sdist" som resulterer i en .tar.gz. Disse er også ofte kalt "egg" når opp til PyPI.

Der du trenger binære egg: når du bunting noen C-kode forlengelse. Du trenger flere binære egg (en 32bit unix en, en windows en, osv) da.

Svarte 13/10/2008 kl. 14:40
kilden bruker

stemmer
4

Egg er en ganske god måte å distribuere python apps. Tenk på det som en plattform uavhengig .deb fil som installerer alle avhengigheter og whatnot. Fordelen er at det er enkelt å bruke for sluttbrukeren. Ulempen er at det kan være tungvint å pakke din app opp som en .egg fil.

Du bør også tilby en alternativ måte å installasjon i tillegg til .eggs. Det er noen mennesker som ikke liker å bruke egg fordi de ikke liker tanken på et program installere hva programvare de ønsker. Disse vanligvis pleier å være sysadmin typer.

Svarte 06/09/2008 kl. 23:43
kilden bruker

stemmer
3

.egg filer er i utgangspunktet en fin måte å distribuere python-programmet. Du kan tenke på det som noe som .jar-filer for Java.

Mer info her .

Svarte 06/09/2008 kl. 23:39
kilden bruker

stemmer
1

For enkle Python-programmer, har du sannsynligvis ikke trenger å bruke egg. Distribuere rå .py filer skal være nok; det er som å distribuere kildefilene for GNU / Linux. Du kan også bruke ulike OS "packagers" (som py2exe eller py2app) for å lage .exe, .dmg, eller andre filer for ulike operativsystemer.

Mer komplekse programmer, f.eks Django, ganske mye krever egg på grunn av de ulike modulene og avhengigheter som kreves.

Svarte 26/09/2008 kl. 07:01
kilden bruker

stemmer
1

Uansett hva du gjør, ikke slutte å distribuere søknaden din, også, som en tarball, som det er den enkleste packagable format for operativsystemer med en pakke sysetem.

Svarte 26/09/2008 kl. 05:26
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more