setup find_packages python setuptools egg

find_packages - Paquetes de Python y directorios de info de huevos



setuptools find_packages (1)

¿Alguien puede explicar cómo los directorios egg-info están vinculados a sus respectivos módulos? Por ejemplo, tengo lo siguiente:

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

Supongo que el directorio egg-info es hacer visible el módulo correspondiente para setuptools (easy_install), ¿verdad? Si es así, ¿cómo las herramientas de configuración vinculan el directorio egg-info al directorio del módulo?

Asumiendo que estoy en el camino correcto, y por el bien del ejemplo ... Si quisiera hacer un paquete existente mío visible para las herramientas de configuración, ¿podría unir simbólicamente el directorio del módulo y el directorio egg-info al sitio? directorio de paquetes? Lo hubiera intentado solo, pero no estoy seguro de cómo probar si el paquete está visible para las herramientas de configuración. Puntos de bonificación si también puedes decirme cómo probar esto :)

La razón principal por la que trato de entender todo esto es porque me gustaría vincular simbólicamente algunos de mis módulos en paquetes de sitio para poder hacer cambios en ellos y hacer que los cambios sean visibles para los scripts que los utilizan sin tener que reinstalar el huevo de PyPI después de cada cambio.


Los directorios .egg-info solo se crean si se utilizó --single-version-externally-managed para instalar el huevo. "Normalmente", la instalación de un huevo crearía un único directorio (o archivo zip), que contiene tanto el código como los metadatos.

pkg_resources (que es la biblioteca que lee los metadatos) tiene una función require que se puede usar para solicitar una versión específica del paquete. Para las importaciones regulares de "estilo antiguo", easy_install piratea un archivo .pth para obtener el directorio egg en sys.path. Para una sola versión, administrada externamente, esta piratería no es necesaria, porque solo habrá una única versión instalada (por la infraestructura de pacaging del sistema, por ejemplo, rpm o dpkg). La información de huevo todavía está incluida, para aplicaciones que require (o cualquiera de los otros mecanismos de enlace de pkg_resources).

Si desea instalar un paquete mediante enlaces duros, le recomiendo usar "setup.py develop". Este es un comando de setuptools que en realidad no instala el huevo, pero lo hace disponible para todo el sitio. Para hacerlo, crea un archivo de enlace de huevo para que pkg_resources lo pueda encontrar, y manipula un archivo .pth, para que la importación regular pueda encontrarlo.