2011-12-28 7 views
7

E 'possibile creare un file setup.py che:setup.py che carica i repository github non Python e li inserisce nella directory corretta?

  • tira dentro un repository github
  • posti i file da quel repository in una cartella specificata

Sono la creazione di un pacchetto/app django che utilizza framework JavaScript di terze parti disponibili su github. Mi piacerebbe essere in grado di setup.py estrarre l'ultima versione da github e quindi posizionare quei file nella cartella static/js appropriata. Quindi questo è diverso dalle normali dipendenze che sono pacchetti Python con i propri file setup.py.

+0

come farne un sottomodulo in modo che siano già inclusi come sottodirectory? – jterrace

+0

Come lo configureresti? –

+0

http://chrisjean.com/2009/04/20/git-submodules-adding-using-removing-and-updating/ – jterrace

risposta

2

Se si utilizza setuptool (setup.py) è possibile utilizzare il requisito di dipendenza: https://stackoverflow.com/a/3481388/496445

Altrimenti come commenti hanno suggerito, impostare il progetto django come un repo git attuale e quindi aggiungere il repo github come un modulo

cd myProject 
git init 
git submodule add git://path/to/repo.git local/location/repo 

Poi si sarebbe solo in grado di cd in quel modulo e git pull

Se non volete impostare il vostro progetto come ag esso pronti contro termine, allora il modo forza bruta sarebbe quello di clonare manualmente il repo github dove si desidera, e quindi aggiungere alcuni comandi manuali in setup.py

import os 
os.system("cd path/to/repo && git pull") 
+0

Funziona se l'elemento in questione non è un modulo Python? Ehm, tutto prima del contrario. Sto ancora pensando di usare setuptool o distutils (a seconda di quale sia più facile da configurare) ma l'oggetto che sto inserendo non è un modulo, quindi sono abbastanza sicuro che la dipendenza non funzionerà. –

+0

Suppongo di no, se non è un pacchetto python. L'opzione due è molto semplice però. – jdi

+0

Ok, ho impostato i sottomoduli ma sono vuoti e quando viene chiamato pip per qualche motivo l'azione clone non ne causa il caricamento. C'è un modo per me di farlo in modo che quando pip viene eseguito aggiorna anche i sottomoduli? –

2

Un'alternativa a questo sarebbe quello di fornire una requisiti. file txt da utilizzare con pip. È possibile specificare repository git e mercurial e pacchetti da PyPI, in modo che l'utente debba semplicemente eseguire pip install -r requirements.txt per ottenere l'intero progetto.

+0

Funziona se i repository nelle domande non hanno file setup.py? –

+0

Mi dispiace di averti votato, ma questa risposta funziona solo se avevo a che fare con i repository Python, che non sono. Solo pensando che alcune persone potrebbero provare questo e non farlo funzionare. Se c'è un modo magico per ottenere pip per inserire moduli non Python tramite il file requirements.txt fammelo sapere, perché non c'è nulla a riguardo nella documentazione. –