2010-03-19 12 views
5

Abbiamo diversi progetti nella nostra organizzazione che sono misti Python/C. Attualmente stiamo cercando di standardizzare un layout di directory per i nostri progetti e stiamo cercando di trovare uno schema conveniente. Un punto di contesa è dove inserire i moduli di estensione C nell'albero.Layout di directory per un progetto Python con moduli di estensione C

Stiamo gettando intorno ad un paio di opzioni (rispetto al progetto principale):

./src/package/subpackage/module.c 

o accanto ai moduli Python all'interno dell'albero dei pacchetti:

./package/subpackage/module.c 

o in una directory src in il subpackage:

./package/subpackage/src/module.c 

Un motivo per tenerli fuori dal direttore del pacchetto potrebbe esserlo perché porterà alla confusione, specialmente se ci sono altri file .c e .h che non sono essi stessi moduli ma che devono ancora essere compilati. Anche nello schema "integrato", cosa fai con intestazioni e file che vengono utilizzati da più di un modulo? Inserirli in una directory di primo livello comune?

Sarei interessato a sapere che cosa utilizzano le altre persone o se ci sono delle best practice consolidate per questo.

+0

se ci sono notizie su questo argomento, sarei felice di sentire. –

risposta

1

penso il layout della libreria standard di Python è un esempio ragionevole: in trunk, che è fondamentalmente la radice per il repo SVN (al netto delle filiali & c), la directory Modules ha un sacco di .c e .h file, la directory Lib contiene molti file .py.

Nei miei progetti tendo a suddividere le sorgenti in modo simile (e in realtà se ho Cython o Pyrex, o SWIG ecc., Tendo ad avere ancora altre directory per la suddivisione), anche se con nomi di directory diversi (Confesso che non ho una regola coerente per i nomi delle directory, né ho mai sentito di buone linee guida per tali nomi).

+0

Ho dato un'occhiata alla libreria standard Python e non sono convinto che sia un buon esempio. Soprattutto perché molte decisioni dell'organizzazione sono state fatte indietro e potrebbero non riflettere tutte le cose attualmente in uso. Immagino che se dovessi seguire questa strada, avrei bisogno di uno script di compilazione che raccolga i moduli da tutte le diverse posizioni e li metta in una directory finale del pacchetto per il test o la distribuzione? –

Problemi correlati