Domanda

mi chiedo il più semplice / modo corretto / più divinatorio di trattare con sottoprogetti che si desidera avere con lo stesso pacchetto di base. Al momento abbiamo una struttura di file in questo modo:

trunk\
    proj1\setup.py
          company_name\__init__.py + proj1's code
    proj2\setup.py
          company_name\__init__.py + proj2's code

Vogliamo mantenere il comune namespace company_name a tutti i nostri progetti (forse questo è di per sé unpythonic?), Ma quando proj1 e proj2 sono installati in modalità sviluppo, il primo installato viene rotto. Sembra import company_name... si confonde su quale pacchetto company_name a guardare e afferra la prima / ultima / random uno.

Come questo normalmente essere gestito in un progetto più ampio pitone? E 'possibile risolvere questo con una setup.py nel bagagliaio che costruisce una sorta di mega-uovo? Non ho trovato alcuna informazione rilevante su google o pila, quindi ogni informazione anche solo collegamenti sono molto apprezzate!


modifica: Ho appena provato ad aggiungere un setup.py nella radice cartella con

...    
namespace_packages = ['company_name'],
package_dir = {'company_name' : ['proj1/company_name', 'proj2/company_name']}
...

con adeguate pkg_resources.declare_namespace(__name__) nei file __init_.py, ma ./setup.py bdist_egg dà solo:

  

errore nel comando di installazione company_name: Distribuzione non contiene moduli o pacchetti per il pacchetto namespace 'company_name'

È stato utile?

Soluzione

Mentre non posso garantire per la pythonity della mia soluzione, ho finalmente arrivare le diverse applicazioni in esecuzione insieme bene. Io ero sulla strada giusta con i pacchetti namespace, ma invece di cercare di avere un super-progetto nel bagagliaio, ho aggiunto la linea namespace_packages nel setup.py di ogni singolo progetto. Ciò ha portato alla comportarsi correttamente quando installato insieme, condividendo lo spazio dei nomi company_name come previsto.

Chiunque voglia carillon in su montone castrato questa è una soluzione ragionevole pitone, sono ancora interessato a sapere se questo è "il modo in cui è fatto". Ci si sente bene, ma che potrebbe essere perché imita lo stile java Sono più abituato.

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