2015-01-23 15 views
5

Ho un progetto Python con i file di origine (irrilevante omessi per semplicità) seguente struttura:Come installare una dipendenza da un sottomodulo in Python?

myproject/ 
    mysubmodule/ 
     setup.py 
    setup.py 

Il file myproject/setup.py utilizza distutils.core.setup installare il modulo myproject e le fonti pertinenti. Tuttavia, myproject richiede l'installazione di mysubmodule (questo è un sottomodulo git). Quindi quello che sto facendo in questo momento è:

myproject/$ cd mysubmodule 
myproject/mysubmodule/$ python setup.py install 
myproject/mysubmodule/$ cd .. 
myproject/$ python setup.py install 

questo è troppo noioso per i clienti, soprattutto se il progetto sarà prorogato per ulteriori moduli in futuro.

C'è un modo per automatizzare l'installazione di mysubmodule quando si chiama myproject/setup.py?

+0

L'installazione manuale dei moduli richiede alcune competenze, quindi, può essere troppo difficile per _customers_ – ForceBru

+0

Sì, questo è esattamente il motivo per cui voglio ridurre al minimo lo sforzo. – jotrocken

risposta

2

Creare un pacchetto per mysubmodule con il proprio setup.py e lasciare che il pacchetto di livello superiore dipenda da quel pacchetto nel suo setup.py. Ciò significa che è necessario solo rendere disponibili pacchetti/dipendenze ed eseguire python setup.py install nel pacchetto di livello superiore.

La domanda diventa quindi come spedire le dipendenze/pacchetti ai clienti, ma questo può essere risolto inserendoli in una directory e configurando setup.py per includere tale directory durante la ricerca delle dipendenze.

L'alternativa è "fornitore" mysubmodule che significa semplicemente includerlo in un unico pacchetto (senza ulteriori domande) e disporre di uno python setup.py install per installare il pacchetto principale. Ad esempio, i fornitori pip (inclusi) requests possono quindi utilizzarlo senza dover dipendere dal pacchetto requests.

+0

Puoi fornire maggiori dettagli su come specificare la dipendenza in 'setup.py' del pacchetto di livello superiore? – dPol

Problemi correlati