2012-10-19 11 views
12

È possibile specificare dipendenze sorgente (modificabili) in setup.py che risiedono sul file system locale?Come posso impostare setuptools (o distribuire) installare un pacchetto dal file system locale

Si consideri la seguente struttura di directory, ognuno dei quali vive in un unico repository VCS:

projects 
    utils 
    setup.py 
    ... 
    app1 
    setup.py 
    ... # app1 files depend on ../utils 
    app2 
    setup.py 
    ... # app2 files depend on ../utils 

Dati i seguenti comandi:

cd projects 
mkvirtualenv app1 
pip install -e app1 

Mi piacerebbe avere tutte le dipendenze per app1 installato, compresi "utils", che è una dipendenza "modificabile". Allo stesso modo, se ho fatto lo stesso per app2.

Ho provato a giocare con tutte le diverse combinazioni di file://... URL in install_requires e dependency_links inutilmente. Mi piacerebbe utilizzare un URL di collegamento delle dipendenze come src+file://../utils, che indica a setuptools che l'origine del pacchetto si trova sul file system in questo percorso relativo. C'è un modo per fare questo?

+0

Questo potrebbe essere di aiuto: http://packages.python.org/distribute/setuptools.html#dependencies-that-aren-t-in-pypi –

+0

Grazie, Rob. Ho rivisto questa pagina ampiamente prima di porre la domanda qui. La pagina elenca due categorie di URL: (1) URL di download diretti e (2) URL di pagine Web che contengono collegamenti per il download diretto. Speravo che il mio problema rientrasse nella prima categoria, ma non riesco a capire come costruire l'URL. – millerdev

+4

Ho inviato una [patch to pip] (https://github.com/pypa/pip/pull/719) per supportare il file relativo: 'URL in' dependency_links', che risolve il mio problema. Spero che si unisca presto. – millerdev

risposta

0

Quando voglio lavorare con un insieme di progetti interrelati, li installo tutti usando /setup.py develop.

Se per errore o in un secondo momento desidero rendere modificabile un modulo installato su pip, clonerò il codice sorgente e creerò anche un python setup.py develop, sostituendo quello esistente.

Giusto per essere sicuro, cancello il riferimento nei pacchetti del sito di virtualenv e nel pacchetto stesso.

2

Ho avuto un problema identico in cui dovevo dipendere dai moduli in una cartella di pari livello. Sono stato in grado di trovare una soluzione dopo inciampo su https://caremad.io/2013/07/setup-vs-requirement/

ho finito requirements.txt per riferirsi specificamente al file che volevo, e quindi l'installazione di tutto con

pip install -r requirements.txt 

requirements.txt

-e ../utils                                          
-e . 

E setup.py ha tutte le mie altre dipendenze, tra cui utils. Quando pip tenta di installare app1, si rende conto che la dipendenza del programma di utilità è già stata compilata e quindi passa sopra, mentre installa gli altri requisiti.

+0

il percorso relativo nel file requirements.txt funziona nel caso in cui sia stata inserita la directory ed eseguito il comando ... l'esecuzione dello stesso comando nella directory padre non avrebbe funzionato. Ci sono problemi con le specifiche relative al percorso per il file pip requirements.txt https://github.com/pypa/pip/issues/3772 – infinityLoop

Problemi correlati