Question

Quelqu'un peut-il expliquer comment les répertoires d'informations sur les œufs sont liés à leurs modules respectifs? Par exemple, j'ai les informations suivantes:

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

Je suppose que le répertoire egg-info doit rendre le module correspondant visible dans setuptools (easy_install), n'est-ce pas? Si tel est le cas, comment setuptools lie-t-il le répertoire egg-info au répertoire du module?

En supposant que je suis sur la bonne voie et à titre d'exemple ... Si je voulais rendre visible un paquet de mon paquet existant à setuptools, pourrais-je simplement faire un lien symbolique vers le répertoire du module et le répertoire egg-info vers le répertoire site-packages? J'aurais juste essayé cela moi-même, mais je ne sais pas comment vérifier si le paquet est visible par setuptools. Des points bonus si vous pouvez aussi me dire comment tester ceci:)

La principale raison pour laquelle j'essaie de comprendre tout cela est parce que je voudrais créer un lien symbolique vers certains de mes modules dans des packages de site afin que je puisse les modifier et que les modifications soient visibles pour les scripts qui les utilisent sans avoir réinstaller l'œuf de PyPI après chaque modification.

Était-ce utile?

La solution

Les répertoires .egg-info ne sont créés que si --single-version-externally-managed management a été utilisé pour installer l'oeuf. "Normalement", installer un oeuf créerait un seul répertoire (ou 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ée pour demander une version spécifique du paquet. Pour les importations "anciennes", easy_install hacks un fichier .pth afin d’obtenir le répertoire egg sur sys.path. Ce type de piratage n'est pas nécessaire pour --single-version-externally-managed, car une seule version sera installée (par l'infrastructure de consolidation du système, par exemple, rpm ou dpkg). Les informations sur les œufs sont toujours incluses, pour les applications qui utilisent require (ou l'un des autres mécanismes de liaison de pkg_resources).

Si vous souhaitez installer un package par liaison physique, je vous recommande d'utiliser "setup.py develop". C'est une commande de setuptools qui n'installe pas l'oeuf, mais le rend disponible sur l'ensemble du site. Pour ce faire, il crée un fichier egg-link afin que pkg_resources puisse le trouver, et manipule un fichier .pth afin que l’importation régulière puisse le trouver.

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