Domanda

Qualcuno può spiegare come le directory egg-info sono legate ai rispettivi moduli? Ad esempio, ho il seguente:

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

Suppongo che la directory egg-info sia per rendere visibile il modulo corrispondente a setuptools (easy_install), giusto? In tal caso, in che modo setuptools collega la directory egg-info alla directory del modulo?

Supponendo che io sia sulla buona strada, e per il bene di esempio ... Se volessi rendere un mio pacchetto esistente visibile a setuptools, potrei semplicemente collegare simbolicamente la directory del modulo e la directory egg-info a la directory dei pacchetti del sito? Lo avrei provato da solo, ma non sono sicuro di come testare se il pacchetto è visibile a setuptools. Punti bonus se puoi anche dirmi come testarlo :)

Il motivo principale per cui sto cercando di capire tutto questo è perché vorrei collegare in modo sintetico alcuni dei miei moduli in pacchetti del sito in modo da poter apportare modifiche ad essi e renderli visibili agli script che li usano senza dover per reinstallare l'uovo da PyPI dopo ogni modifica.

È stato utile?

Soluzione

Le directory .egg-info vengono create solo se per installare l'uovo è stato usato --single-version-Externally-Managed. "Normalmente", l'installazione di un uovo creerebbe una singola directory (o file zip), contenente sia il codice che i metadati.

pkg_resources (che è la libreria che legge i metadati) ha una funzione richiedono che può essere usata per richiedere una versione specifica del pacchetto. Per le importazioni regolari di "vecchio stile", easy_install modifica un file .pth per ottenere la directory egg su sys.path. Per --single-versione-gestita esternamente, questo hacking non è necessario, perché ci sarà una sola versione installata (dall'infrastruttura di pacakging del sistema, ad esempio rpm o dpkg). Le informazioni sull'uovo sono ancora incluse, per le applicazioni che usano richiedono (o uno qualsiasi degli altri meccanismi di associazione pkg_resources).

Se vuoi installare un pacchetto tramite hard link, ti ??consiglio di usare " setup.py sviluppare " ;. Questo è un comando da setuptools che non installa effettivamente l'uovo, ma lo rende disponibile in tutto il sito. Per fare ciò, crea un file egg-link in modo che pkg_resources possa trovarlo e manipola un file .pth, in modo che possa essere trovato da una normale importazione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top