Was ist ein Python-Ei?

532

Ich bin neu in Python und versuche nur zu verstehen, wie seine Pakete funktionieren. Vermutlich sind "Eier" eine Art Verpackungsmechanismus, aber was wäre ein schneller Überblick darüber, welche Rolle sie spielen, und möglicherweise Informationen darüber, warum sie nützlich sind und wie sie erstellt werden?

Bialecki
quelle

Antworten:

527

Hinweis: Die Eierverpackung wurde durch die Radverpackung ersetzt.

Das gleiche Konzept wie eine .jarDatei in Java ist eine .zipDatei mit einigen umbenannten Metadatendateien .eggzum Verteilen von Code als Bundles.

Insbesondere: Die interne Struktur von Python-Eiern

Ein "Python-Ei" ist eine logische Struktur, die die Veröffentlichung einer bestimmten Version eines Python-Projekts verkörpert, die Code, Ressourcen und Metadaten umfasst. Es gibt mehrere Formate, mit denen ein Python-Ei physisch codiert werden kann, und andere können entwickelt werden. Ein Schlüsselprinzip von Python-Eiern ist jedoch, dass sie auffindbar und importierbar sein sollten. Das heißt, es sollte einer Python-Anwendung möglich sein, einfach und effizient herauszufinden, welche Eier auf einem System vorhanden sind, und sicherzustellen, dass der Inhalt der gewünschten Eier importierbar ist.

Das .eggFormat eignet sich gut für die Verteilung und die einfache Deinstallation oder Aktualisierung von Code, da das Projekt im Wesentlichen in einem einzelnen Verzeichnis oder einer einzelnen Datei enthalten ist und sich nicht mit dem Code oder den Ressourcen anderer Projekte vermischt. Es ist auch möglich, mehrere Versionen eines Projekts gleichzeitig zu installieren, sodass einzelne Programme die Versionen auswählen können, die sie verwenden möchten.

jefe2000
quelle
82

Die .eggDatei ist ein Verteilungsformat für Python-Pakete. Es ist nur eine Alternative zu einer Quellcodeverteilung oder Windows exe. Beachten Sie jedoch, dass Pythondie .eggDatei für pure vollständig plattformübergreifend ist.

Die .eggDatei selbst ist im Wesentlichen eine .zipDatei. Wenn Sie die Erweiterung in " zip" ändern , sehen Sie, dass sich Ordner im Archiv befinden.

Wenn Sie eine .eggDatei haben, können Sie diese auch als Paket mit installiereneasy_install

Beispiel: Führen Sie den folgenden Schritt aus, um eine .eggDatei für ein Verzeichnis zu erstellen , mymathdas möglicherweise mehrere Python-Skripte enthält:

# setup.py
from setuptools import setup, find_packages
setup(
    name = "mymath",
    version = "0.1",
    packages = find_packages()
    )

Dann vom Terminal aus:

 $ python setup.py bdist_egg

Dies wird viele Ausgaben generieren, aber wenn es abgeschlossen ist, werden Sie sehen, dass Sie drei neue Ordner haben: build , dist und mymath.egg-info . Der einzige Ordner, der uns wichtig ist, ist der dist- Ordner, in dem Sie Ihre .eggDatei finden.mymath-0.1-py3.5.egg mit Ihrer Standardversionsnummer für Python (Installation) finden (meine hier: 3.5).

Quelle: Python-Bibliotheksblog

kmario23
quelle
3

Python-Eier sind eine Möglichkeit, zusätzliche Informationen mit einem Python-Projekt zu bündeln, sodass die Abhängigkeiten des Projekts zur Laufzeit überprüft und erfüllt werden können und Projekte Plugins für andere Projekte bereitstellen können. Es gibt verschiedene Binärformate, die Eier verkörpern, aber das häufigste ist das ZIP-Dateiformat ".egg", da es sich zum Verteilen von Projekten eignet. Alle Formate werden unterstützt, einschließlich paketspezifischer Daten, projektweiter Metadaten, C-Erweiterungen und Python-Code.

Der einfachste Weg, Python-Eier zu installieren und zu verwenden, ist die Verwendung des Python-Paketmanagers "Easy Install", mit dem Sie Eier finden, herunterladen, erstellen und installieren können. Sie müssen lediglich den Namen (und optional die Version) der Python-Projekte angeben, die Sie verwenden möchten.

Python-Eier können mit Python 2.3 und höher verwendet und mit dem setuptools-Paket erstellt werden (Quellcode finden Sie in der Python Subversion-Sandbox oder auf der EasyInstall-Seite).

Die Hauptvorteile von Python Eggs sind:

  • Sie ermöglichen Tools wie den Python-Paketmanager "Easy Install"

  • .egg-Dateien sind ein "Null-Installations" -Format für ein Python-Paket. Es ist kein Build- oder Installationsschritt erforderlich. Legen Sie sie einfach auf PYTHONPATH oder sys.path ab und verwenden Sie sie (möglicherweise muss die Laufzeit installiert sein, wenn C-Erweiterungen oder Datendateien verwendet werden.)

  • Sie können Paketmetadaten enthalten, z. B. die anderen Eier, von denen sie abhängig sind

  • Sie ermöglichen die Aufteilung von "Namespace-Paketen" (Pakete, die nur andere Pakete enthalten) in separate Distributionen (z. B. zope. , Twisted. , Peak. *). Pakete können als separate Eier verteilt werden, im Gegensatz zu normalen Paketen, die immer unter denselben platziert werden müssen übergeordnetes Verzeichnis. Dadurch können die jetzt riesigen monolithischen Pakete als separate Komponenten verteilt werden.)

  • Sie ermöglichen es Anwendungen oder Bibliotheken, die benötigte Version einer Bibliothek anzugeben, sodass Sie beispielsweise ("Twisted-Internet> = 2.0") benötigen können, bevor Sie einen Twisted.internet-Import durchführen.

  • Sie sind ein großartiges Format zum Verteilen von Erweiterungen oder Plugins an erweiterbare Anwendungen und Frameworks (z. B. Trac, das ab 0.9b1 Eier für Plugins verwendet), da die Eierlaufzeit einfache APIs zum Auffinden von Eiern und zum Auffinden der angekündigten Einstiegspunkte bietet (ähnlich) zum "Erweiterungspunkt" -Konzept von Eclipse).

Es gibt auch andere Vorteile, die sich aus einem standardisierten Format ergeben können, ähnlich den Vorteilen des "jar" -Formats von Java.

Prosti
quelle
Ist Python Egg eine spezifische Version? dh Ei für 2 gegen 3 gebaut? oder auch kleinere Versionen? ex 2.x
ealeon
1

"Egg" ist ein importierbares Distributionsformat für einzelne Dateien für Python-Projekte.

"Die Kurzanleitung zu Python-Eiern" stellt fest, dass "Eier zu Pythons gehören, wie Gläser zu Java ..."

Eier sind tatsächlich reicher als Gläser; Sie enthalten interessante Metadaten wie Lizenzdetails, Release-Abhängigkeiten usw.

Aerin
quelle
Der Link ist ab heute tot.
Perfi
@Perfi Link funktioniert bei mir.
Klik
Komisch, wie es manchmal funktioniert! Es ist wieder online.
Freut mich