2012-05-22 11 views
5

All'interno del setup.py ho qualcosa di simile:Come posso convincere setuptools a utilizzare una directory temporanea per richiedere pacchetti da setup_require o tests_require?

setup_requires=['nose>=1.0'], 
tests_require=[], 

Il problema è che quando faccio funzionare ./setup.py test verrà scaricato e decomprimere questi moduli nella directory con setup.py.

Come posso convincere a utilizzare una directory temporanea per questo, non voglio perfezionare il sistema di controllo del codice sorgente con questi, e non voglio iniziare ad aggiungere un sacco di schemi di esclusione.

risposta

1

Se il problema è l'albero dei sorgenti del progetto, è consigliabile creare uno script per eliminare tutte le directory "dist" e "build" create da distutils al termine del test di installazione. I pacchetti scaricati di solito sono le cartelle * .egg nell'albero dei sorgenti.

Non stai inquinando la tua distribuzione.

Da documentazione setuptools:

setup_requires non verrà installato automaticamente sul sistema in cui script di installazione è in esecuzione. Vengono semplicemente scaricati nella directory di installazione se non sono già disponibili localmente. Se si desidera che per essere installato, oltre ad essere a disposizione quando lo script di installazione è corsa, li si dovrebbe aggiungere alla install_requires e setup_requires.)

e

tests_require Se la vostra I test del progetto richiedono uno o più pacchetti aggiuntivi oltre a quelli necessari per installarlo, è possibile utilizzare questa opzione per specificarli. Dovrebbe essere una stringa o un elenco di stringhe che specifica quali altre distribuzioni devono essere presenti per i test del pacchetto a esecuzione . Quando esegui il comando di test, setuptools tenterà di ottenere questi (arrivando addirittura a scaricarli usando EasyInstall). Nota che questi progetti richiesti non verranno installati sul sistema in cui vengono eseguiti i test , ma solo scaricati nella directory di installazione del progetto se non sono già installati localmente.

http://packages.python.org/distribute/setuptools.html

Se è stato installato qualche pacchetto ed è necessario rimuoverlo, solo trovare il pacchetto nella sottocartella "site-packages" della vostra distribuzione Python ed eliminarlo. Infine, rimuovi il riferimento del pacchetto nel file easy-install.pth che di solito si trova nella stessa directory "site-packages".

+0

Grazie. Ciò che stavo cercando non era quello di inquinare la mia copia di lavoro quando eseguo 'setup.py', che è nella root del repository.Quindi sto cercando un modo per convincere setuptools a creare questi file da qualche altra parte. – sorin

+0

corretto. Penso che dovresti andare con una sceneggiatura! –

0

A partire da setuptools 7.0, le dipendenze dei transitori caricate per setup_requires, tests_require e simili sono installate in ./.eggs. Vi incoraggio fortemente ad aggiungerlo alla vostra lista di ignoranza globale.