I problemi che utilizzano il naso in un virtualenv
-
21-08-2019 - |
Domanda
Non sono in grado di utilizzare il naso (nosetests) in un progetto virtualenv - non riesco a trovare i pacchetti installati nell'ambiente virtualenv
.La cosa strana è che posso impostare
test_suite = 'nose.collector'
in setup.py ed eseguire le prove bene come
python setup.py test
, ma durante l'esecuzione nosetests dritto, ci sono tutti i tipi di errori di importazione.
Lo ho provato sia con un impianto a livello di sistema del naso e un pacchetto virtualenv naso e senza fortuna.
Qualche idea?
Grazie !!
Soluzione
Sei in grado di eseguire myenv/bin/python /usr/bin/nosetests
? Questo dovrebbe funzionare naso utilizzando set biblioteca del ambiente virtuale.
Altri suggerimenti
È necessario disporre di una copia di naso installata in un ambiente virtuale. Per forzare l'installazione del naso nel virtualenv, anche se è già installato nel sito-pacchetti globali, eseguire pip install
con la -I
bandiera:
(env1)$ pip install nose -I
Da allora in poi si può solo eseguire nosetests
come al solito.
Nella stessa situazione ho bisogno per ricaricare la virtualenv
per il percorso da aggiornato correttamente:
deactivate
env/bin/activate
Ho un problema simile. La seguente soluzione ha aiutato:
python `which nosetests`
(invece di nosestests
)
Ecco ciò che funziona per me:
$ virtualenv --no-site-packages env1
$ cd env1
$ source bin/activate # makes "env1" environment active,
# you will notice that the command prompt
# now has the environment name in it.
(env1)$ easy_install nose # install nose package into "env1"
Ho creato un pacchetto veramente di base slither
che ha avuto, nella sua setup.py
, lo stesso attributo test_suite
come lei ha ricordato sopra. Poi ho messo il pacchetto sorgente in env1/src
.
Se avete guardato dentro test
, vedreste:
slither/setup.py
slither/slither/__init__.py
slither/slither/impl.py # has some very silly code to be tested
slither/slither/tests.py # has test-cases
Posso eseguire i test utilizzando nosetests
sottocomando:
(env1)$ pushd src/slither
(env1)$ python setup.py test
# ... output elided ...
test_ctor (slither.tests.SnakeTests) ... ok
test_division_by_zero (slither.tests.SnakeTests) ... ok
Ran 2 tests in 0.009s
OK
(env1)$ popd
In alternativa, posso eseguire gli stessi test con --exe
:
(env1)$ pushd src
(env1)$ nosetests slither/
..
Ran 2 tests in 0.007s
OK
(env1)$ popd
Si noti inoltre che <=> può essere pignoli su eseguibili. È possibile passare <=> se si vuole scoprire prove in moduli Python che sono eseguibili.
Se tutto il resto fallisce, provare a installare il naso nel vostro venv, e / o gestiscono nosetests-2.7
. Credo che la risposta di @ andrea-Zonca ha lo stesso effetto se il pitone venv è 2.7
Forse questo è un recente cambiamento, ma per me, quando ho installato nosetests attraverso pip, c'era un nosetests eseguibili installati in .virtualenvs/<env>/bin
, che (com'era prevedibile) funziona correttamente con il virtualenv.
Si potrebbe avere un nosetests
che viene installato da qualche altra parte nel vostro PATH
con priorità più alta rispetto a quella installata nel virtualenv. Un modo veloce per dare al nose
modulo ed associato <=> script installato nella vostra priorità virtualenv top attuale è quella di modificare il <=>:
export PATH=/path/to/current/virtualenv/bin:$PATH