2010-10-24 2 views

Répondre

1

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.

+0

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

+0

votre bienvenue je suppose :) – jknair

+0

Le lien semble cassé maintenant. Pouvez-vous le mettre à jour? –

1

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.

+0

Vous * pouvez * installer les oeufs décompressés, si vous le souhaitez aussi. 'easy-install --always-unzip'. – snapshoe

+0

c'est bon à savoir! – mindthief

0

@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?.

Questions connexes