2012-09-04 12 views
35

Il nostro progetto python ha un file requirements.txt che elenca alcuni moduli dipendenti. UsavamoCome può tox installare i moduli tramite il file dei requisiti?

pip install -r requirements.txt 

per installare queste dipendenze. Ora stiamo usando tox per creare l'ambiente di test. La mia domanda è che come possiamo installare i moduli direttamente tramite requirement.txt.

chi segue i nostri tox.ini e requirements.txt:

tox.ini:

[tox] 
envlist=py27 
[testenv] 
deps=pytest 
    boto 
commands=py.test 

rquirements.txt:

boto 

È un modo per rimuovere il "boto" da tox.ini e aggiungi qualcosa come

deps_files=requirements.txt 

risposta

45
deps = -r{toxinidir}/tools/pip-requires 
     -r{toxinidir}/tools/test-requires 
+0

Funziona! Grazie. – waitingkuo

+4

Questa soluzione è fantastica e quello che sto attualmente usando. Recentemente mi sono reso conto di un altro approccio degno. Non è il metodo esatto richiesto dall'OP, ma vale la pena leggerlo. Il post è di Donald Stufft (uno sviluppatore principale di 'pip'): [setup.py vs. requirements.txt] (https://caremad.io/blog/setup-vs-requirements/) – hangtwenty

+4

Questo ha il problema che non aggiornerà automaticamente il collegamento interrotto virtualenv –

16

Ciò che mi ha aiutato è il seguente (l'altra soluzione non ha funzionato per me):

deps= 
    pytest 
    -rrequirements.txt 

Questo funziona, almeno se si aggiunge requirements.txt a MANIFEST.in e se si utilizza un relativamente nuovo `tox (> = 1.6.1) versione (see here).

+0

Grande aiuto, grazie. L'inclusione in 'MANIFEST.in' non è richiesta per la semplice chiamata' $ tox', ma se stai usando '$ devpi test', l'inclusione è cruciale. –

+6

Nota, che ** Non ci deve essere spazio tra '-r' e' requirements.txt' **. Per me, uno spazio ha impedito 'requisiti.txt' per l'installazione. –

+0

Questo è ancora contrassegnato come "sperimentale" nei documenti però. –

13

Avevo già impostato le mie dipendenze come nella risposta accettata sopra, tuttavia tutte le nuove dipendenze non sono state installate come sono quando tox viene eseguito per la prima volta. Per installare nuove dipendenze nel virtualenv ho dovuto forzare tox per ricreare l'ambiente in questo modo:

tox --recreate -e py27

1

Si può mettere le dipendenze e le dipendenze di prova in requirements.txt e requirements.testing.txt al fine di directory principale.

Inserire tox.ini nella directory principale del progetto ed è possibile utilizzare l'approccio seguente per installare le dipendenze.

[testenv] deps = -r{toxinidir}/requirements.txt -r{toxinidir}/requirements.testing.txt

Oltre per aggiornare le dipendenze

[testenv] deps = -Ur{toxinidir}/requirements.txt -Ur{toxinidir}/requirements.testing.txt

Problemi correlati