Il semble que l'ajout d'un chemin d'accès à votre PYTHONPATH vous donne accès à tous ses modules et fonctions, comme pour l'installation d'un oeuf. La différence est-elle juste que l'oeuf est compressé?En quoi un oeuf python est-il différent d'un paquet régulier?
Répondre
Oui absolument, mais un peu plus lire cette section http://www.ibm.com/developerworks/library/l-cppeak3.html goto « Tout sur les œufs » copiés à partir du site ci-dessus:
Cependant, ce genre de manipulation du PYTHONPATH (ou de sys.path dans un script ou session shell Python) est un peu fragile. La découverte des oeufs est probablement mieux gérée dans certains fichiers .pth magiques. Tous les fichiers .pth trouvés dans les paquetages de site/ou sur le PYTHONPATH sont analysés pour que les importations supplémentaires puissent être effectuées, d'une manière très similaire à la façon dont les répertoires dans ces emplacements qui pourraient contenir des paquets sont examinés. Si vous gérez la gestion des paquets avec setuptools, un fichier appelé easy-install.pth est modifié lorsque les paquets sont installés, mis à jour, supprimés, etc. Mais vous pouvez appeler vos fichiers .pth comme vous voulez (tant qu'ils ont l'extension .pth). Par exemple, voici mon facile install.pth:
Listing 11. fichiers .pth que la configuration des emplacements d'œufs
% cat /sw/lib/python2.4/site-packages/easy-install.pth import sys; sys.__plen = len(sys.path) setuptools-0.6b1-py2.4.egg SQLObject-0.7.0-py2.4.egg FormEncode-0.5.1-py2.4.egg Gnosis_Utils-1.2.1-py2.4.egg import sys; new=sys.path[sys.__plen:]; del sys.path[sys.__plen:]; p=getattr(sys,'__egginsert',0); sys.path[p:p]=new; sys.__egginsert = p+len(new)
Le format est un peu particulière: il est presque, mais pas tout à fait, un Script Python. Il suffit de dire que vous pouvez ajouter des œufs supplémentaires dans la liste; ou mieux encore, easy_install le fera pour vous quand il s'exécutera. Vous pouvez également créer autant d'autres fichiers .pth que vous le souhaitez sous les packages de site /, et chacun peut simplement lister les œufs à rendre disponibles.
Python Eggs est un système de distribution de paquets qui fait a lot more que simplement copier des fichiers et changer $PYTHONPATH
.
EDIT:A lot more
signifiant par ex. runtime dependency resolution et plugin support. Voir http://en.wikipedia.org/wiki/EasyInstall.
Il n'est pas clair à partir de ce lien quel est le "lot de plus" (il ne semble pas que easy_install nécessite exclusivement le format de l'oeuf). Pouvez-vous élucider? merci :) – mindthief
Oui, et les fichiers d'oeufs zip sont décompressés à la volée lorsque vous les référencez, ce qui les rend plus lents que lorsque vous les installez.
@lamirap: pas nécessairement. D'abord, la lecture du disque prend du temps, surtout si le module a plus d'un fichier. Donc, si l'on compare la lecture de plusieurs fichiers à partir du disque sans dézipper et lire un fichier - c'est plus petit, mais suivi avec un autre frais de décompression, ce dernier n'est pas nécessairement plus lent.
Deuxièmement, en théorie en utilisant des oeufs contribue à raccourcir sys.path, voir http://mail.python.org/pipermail/python-dev/2006-April/064544.html.
Donc, ma conclusion à propos de la performance est - "ça dépend".
* Voir aussi: Disadvantage of Python eggs?.
- 1. J'ai créé un oeuf de Python; Maintenant quoi?
- 2. Comment mettre à jour un fichier en oeuf python
- 3. Comment envoyer un paquet IP en Python?
- 4. Installer MySQLdb (pour python) comme oeuf
- 5. En quoi un initialiseur d'instance est-il différent d'un constructeur?
- 6. Python coller en utilisant oeuf global au lieu de local
- 7. Comment installer un module comme un oeuf sous IronPython?
- 8. python: exemple simple pour un oeuf python avec un fichier source à un fichier?
- 9. Méthode d'appel depuis un fichier Python différent
- 10. Comment faire pour que easy_install développe un paquet dans des répertoires plutôt qu'un seul fichier oeuf?
- 11. comment vérifier si un fichier est un répertoire ou un fichier régulier en python?
- 12. En quoi mysql est-il différent des performances d'Oracle?
- 13. Python Trouver tous les paquets dans un paquet, même dans un œuf
- 14. distutils "pas un fichier régulier --skipped"
- 15. Python: importer le paquet contenant
- 16. Classe Python - Utilisation dans un programme python différent
- 17. De html échappé -> au html régulier? - Python
- 18. Application de clonage avec nom de paquet différent
- 19. En quoi le modèle Observer est-il différent d'un modèle piloté par un événement?
- 20. Django: Poulet ou oeuf question
- 21. Un paquet Python peut-il dépendre d'une révision de contrôle de version spécifique d'un autre paquet Python?
- 22. API d'un paquet en python. Dans __init__.py?
- 23. GTK: créer un bouton régulier coloré
- 24. cache de données pour le paquet python
- 25. Comment utiliser ce paquet Python? (guess_language)
- 26. En quoi le deuxième argument de la fonction eval est-il différent du troisième argument?
- 27. Python - Rpy2 - Impossible d'importer un paquet de paquets
- 28. quoi de différent entre les méthodes nibNameOrNil et ViewDidLoad?
- 29. python: liste les modules dans le paquet
- 30. En quoi consiste l'ajout à l'API Python standard?
cette réponse, étant sorti du contexte tel qu'il est, est un peu confus, mais la lecture de l'article référencé était très utile et a répondu à ma question. – mindthief
votre bienvenue je suppose :) – jknair
Le lien semble cassé maintenant. Pouvez-vous le mettre à jour? –