![]() |
[Python] Faire une omelette! - Version imprimable +- N-PN White-Hat Project (https://dev.n-pn.fr/forum) +-- Forum : Programmation (https://dev.n-pn.fr/forum/forumdisplay.php?fid=72) +--- Forum : Langages interprétés (https://dev.n-pn.fr/forum/forumdisplay.php?fid=27) +--- Sujet : [Python] Faire une omelette! (/showthread.php?tid=3599) |
[Python] Faire une omelette! - ark - 19-03-2014 Hello, Alors, comment faire une omelette en python ? Vous ne savez pas ? Ben c'est simple, utilisez des Egg ! (Oui, j'étais inspiré pour le jeu de mot =)) Je vais vous présenter vite fait le concept, parce que j'ai découvert ça hier, et j'aime bien l'idée =) Un Egg en python, en fait c'est a peu près l'équivalent d'une archive .jar en java. Et plus concrètement, il s'agit d'une archive ZIP. Pour l'exemple, voici un peu ce que l'on va packer : Code : $> tree On peut voir ici que mon Egg contiendra deux packages : foo et bar qui eux contiennent du code python. On a aussi le __main__.py qui lui sera appelé au lancement de notre egg. le code de ces fichiers: ./__main__.py Code PYTHON :
./bar/__init__.py Code PYTHON :
Deux petites remarques ici : - Oui, ma classe Foo est bien dans le repertoire bar ; pourquoi? Parce que j'avais envie =) - J'utilise du python 3.4 (c'est tout beau tout neuf :D) Et du coup, pas besoin de preciser qu'une classe hérite de object quand on la déclare! C'est cool nan? Moi je trouve ça plus propre. ./bar/module.py Code PYTHON :
La fonction cipher, je vous laisse deviner ce qu'elle fait, c'est pas ce qui nous intéresse ici. ./foo/__init__.py Code PYTHON :
Voilà donc mes fichiers d'exemple. A ce stade, on peut lancer notre programme python tout simplement, soi en faisant: Code BASH :
soit : Code BASH :
Je vous laisse tester si ça vous amuse, mais globalement, jusque là, rien de nouveau. Python va dans ce cas générer des dossiers __pycache__ dans les deux sous répertoires. Vous pouvez les supprimer avant de passer à la suite. Maintenant, passons à l'omelette! =) Pour faire notre Egg, rien de bien compliqué, on va tout simplement faire un (dans le repertoire courant) : Code BASH :
Avec ça, on obtiens donc un egg_name.zip ; que vous pouvez (ou non) renommer en egg_name.egg. Dans tous les cas, vous pouvez déjà lancer cet Edd en faisant tout simplement : Code BASH :
Voilà =) Je trouve ce concept sympa, je sais pas de quand ça date, mais je connaissais pas, et franchement c'est carrément plus pratique pour envoyer un programme python à quelqu'un. De plus, il est possible de mettre des fichiers de LICENSE, README, CHANGELOG, etc dans l'Egg afin de faire un truc bien :p On peut apparement également y mettre un fichier setup.py qui permettrait d'installer l'egg directement :) Bref, je suis fan! :p RE: [Python] Faire une omelette! - gruik - 19-03-2014 nice je connaissais pas, mais c'est effectivement assez pratique pour peu qu'on ait un projet suffisamment volumineux/à plusieurs fichiers & modules, et c'est simple à mettre en œuvre de ce que je lis les eggs permettent aussi notamment de spécifier via des metadatas les dépendances du package, y compris de fournir des urls en vue de satisfaire les dépendances éventuelles, la hiérarchisation et la catégorisation des différents fichiers (quel module prend le pas sur les autres, quel point d'entrée, quelles sont les ressources, quels sont les scripts etc.) pour les setuptools, easy-install etc. et y compris le chiffrement via AES manifestement plus d'infos sur le format |