Quels sont les avantages de conditionner votre bibliothèque/application Python sous forme de fichier .egg ?

StackOverflow https://stackoverflow.com/questions/47953

Question

J'en ai lu sur les fichiers .egg et je les ai remarqués dans mon répertoire lib, mais quels sont les avantages/inconvénients de les utiliser en tant que développeur ?

Était-ce utile?

La solution

Du Communauté Python Enterprise Application Kit:

"Les œufs sont aux Pythons ce que les Jars sont à Java..."

Les œufs Python sont un moyen de regrouper des informations supplémentaires avec un projet Python, qui permet aux dépendances du projet d'être vérifiées et satisfaites au moment de l'exécution, ainsi que de permettre aux projets de fournir des plugins pour d'autres projets.Il existe plusieurs formats binaires qui incarnent les œufs, mais le plus courant est le format zipfile «Egg», car il est pratique pour la distribution de projets.Tous les formats prennent en charge, y compris les données spécifiques au package, les métadonnées à l'échelle du projet, les extensions C et le code Python.

Les principaux avantages des œufs Python sont:

  • Ils activent des outils tels que le gestionnaire de packages Python « Easy Install »

  • Les fichiers .Egg sont un format "Zero Installation" pour un package Python;Aucune étape de construction ou d'installation n'est requise, il suffit de les mettre sur PythonPath ou SYS.PATH et utilisez-les (peut nécessiter le temps d'exécution installé si les extensions ou les fichiers de données sont utilisés)

  • Ils peuvent inclure des métadonnées de package, telles que les autres œufs dont ils dépendent

  • Ils permettent aux «packages d'espace de noms» (des packages qui ne contiennent que d'autres packages) à diviser en distributions distinctes (par exemplezopé., tordu., Peak. * Les packages peuvent être distribués sous forme d'œufs séparés, contrairement aux packages normaux qui doivent toujours être placés sous le même répertoire parent.Cela permet à la distribution de packages monolithiques énormes en tant que composants distincts.)

  • Ils permettent aux applications ou aux bibliothèques de spécifier la version nécessaire d'une bibliothèque, afin que vous puissiez comprendrerequire ("Twisted-Internet> = 2.0") avant de faire une importation Twisted.internet.

  • Ils sont un excellent format pour distribuer des extensions ou des plugins vers des applications et des cadres extensibles (tels que TRAC, qui utilise des œufs pour les plugins à 0,9b1), car le temps d'exécution des œufs fournit des API simples pour localiser les œufs et trouver leurs points d'entrée annoncés (similaires au concept de "point d'extension" d'Eclipse).

  • Il existe également d'autres avantages qui peuvent provenir d'un format standardisé, similaire aux avantages du format "Jar" ​​de Java.

-Adam

Autres conseils

Un œuf en lui-même ne vaut pas mieux qu'une source appropriée.La bonne partie est la gestion des dépendances.Comme les paquets Debian ou RPM, vous pouvez dire que vous dépendez d'autres œufs et ils seront installés automatiquement (via pypi.python.org).

Un deuxième commentaire :le format d'œuf lui-même est un format binaire.Les packages Python normaux constitués uniquement de code Python sont mieux distribués sous forme de "versions sources", donc "python setup.py sdist" qui aboutissent à un .tar.gz.Ceux-ci sont aussi communément appelés « œufs » lorsqu'ils sont téléchargés sur pypi.

Où avez-vous besoin d’œufs binaires :lorsque vous regroupez une extension de code C.Vous aurez alors besoin de plusieurs œufs binaires (un Unix 32 bits, un Windows, etc.).

Les œufs sont un très bon moyen de distribuer des applications Python.Considérez-le comme un fichier .deb indépendant de la plate-forme qui installera toutes les dépendances et ainsi de suite.L'avantage est qu'il est facile à utiliser pour l'utilisateur final.L'inconvénient est qu'il peut être fastidieux de regrouper votre application sous forme de fichier .egg.

Vous devez également proposer un moyen d'installation alternatif en plus du .eggs.Il y a des gens qui n'aiment pas utiliser les œufs parce qu'ils n'aiment pas l'idée qu'un logiciel installe le logiciel qu'il veut.Il s’agit généralement de types d’administrateurs système.

Les fichiers .egg sont fondamentalement un bon moyen de déployer votre application Python.Vous pouvez le considérer comme quelque chose comme des fichiers .jar pour Java.

Plus d'informations ici.

Quoi que vous fassiez, n'arrêtez pas de distribuer votre application également sous forme d'archive tar, car il s'agit du format empaquetable le plus simple pour les systèmes d'exploitation dotés d'un système de packages.

Pour les programmes Python simples, vous n'avez probablement pas besoin d'utiliser des œufs.La distribution des fichiers .py bruts devrait suffire ;c'est comme distribuer des fichiers sources pour GNU/Linux.Vous pouvez également utiliser les différents « packagers » du système d'exploitation (comme py2exe ou py2app) pour créer des fichiers .exe, .dmg ou d'autres fichiers pour différents systèmes d'exploitation.

Programmes plus complexes, par ex.Django nécessite à peu près des œufs en raison des différents modules et dépendances requis.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top