42 votes

Paquets Python et annuaires d'oeufs

Quelqu'un peut m'expliquer comment egg-info répertoires sont liés à leurs modules respectifs? Par exemple, j'ai le texte suivant:

/usr/local/lib/python2.5/site-packages/quodlibet/
/usr/local/lib/python2.5/site-packages/quodlibet-2.0.egg-info/

Je suis en supposant que l'œuf-info répertoire est de rendre le module correspondant visible à setuptools (easy_install), droit? Si oui, comment faut-setuptools cravate de l'œuf-info répertoire du répertoire du module?

En supposant que je suis sur la bonne voie, et pour le bien de l'exemple... Si je voulais faire un package existant de la mine visible à setuptools, pourrais-je lien symbolique du répertoire du module et de l'œuf-info répertoire du répertoire site-packages répertoire? J'aurais juste essayé moi-même, mais je ne suis pas sûr de la façon de tester si le paquetage est visible à setuptools. Les points de Bonus si vous pouvez aussi me dire comment tester ça :)

La principale raison je vais essayer de comprendre tout cela parce que j'aimerais lien symbolique de certains de mes modules dans site-packages afin que je puisse apporter des modifications à ce que les changements visibles pour les scripts de les utiliser sans avoir à réinstaller l'oeuf de PyPI après chaque modification.

39voto

Martin v. Löwis Points 61768

L' .egg-info répertoires obtenir créé si --single-version-gérés en externe a été utilisé pour installer l'œuf. "Normalement", l'installation d'un œuf serait de créer un répertoire (ou un fichier zip), contenant à la fois le code et les métadonnées.

pkg_resources (qui est la bibliothèque qui lit les métadonnées) a une fonction require qui peut être utilisé pour demander une version spécifique de l'emballage. Pour les "old-style", régulièrement des importations, easy_install hacks une .la pth fichier afin d'obtenir l'œuf répertoire sur sys.chemin d'accès. Pour --single-version-gérés en externe, ce piratage n'est pas nécessaire, car il n'y aura qu'une seule version installée (par le système d'pacakging de l'infrastructure, p. ex. tr / min ou dpkg). L'œuf-info est toujours inclus, pour les applications qui utilisent require (ou tout autre pkg_resources mécanismes de liaison).

Si vous voulez installer un paquet par lier entre eux, je vous recommande d'utiliser "setup.py développer". C'est une commande de setuptools qui n'a pas fait installer des œufs, mais le rend disponible à l'échelle du site. Pour ce faire, il crée un oeuf-lien de fichier, de sorte que pkg_resources pouvez le trouver, et il manipule un .la pth fichier, de sorte que la pratique régulière de l'importation de la trouver.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by: