2009-05-14 12 views
43

Nie mogę używać nosa (nosetests) w projekcie virtualenv - nie można znaleźć pakietów zainstalowanych w środowisku virtualenv.Problemy z używaniem nosa w virtualenv

Najdziwniejsze jest to, że mogę ustawić

test_suite = 'nose.collector' 

w setup.py i uruchomić testy dobrze jak

python setup.py test 

ale kiedy uruchomiony nosetests prosto, tam są wszystkie rodzaje błędów importu .

Próbowałem go zarówno z ogólnosystemową instalacją nosa jak i wirtualnym pakietem nosowym i bez powodzenia.

Jakieś myśli?

Dzięki!

+0

Na powiązana uwaga nos działa poprawnie „out of the box” na innym komputerze ... więc coś jest słaby z systemem byłem mając problemy na. – Ryan

Odpowiedz

42

Czy jesteś w stanie uruchomić myenv/bin/python /usr/bin/nosetests? To powinno uruchomić Nos przy użyciu zestawu bibliotek środowiska wirtualnego.

+0

Tak, rzeczywiście. To działa. Dziękuję Ci! – Ryan

+3

Jeśli korzystasz ze skryptów używanych przez innych programistów, możesz użyć 'pythona \' który nosetests \ '' – bcoughlan

+2

Wypróbuj ten alias nosetests = '/ usr/bin/env python $ (który nosetests)' – Necrolyte2

8

Oto, co działa dla mnie:

$ 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" 

stworzyłem paczkę naprawdę podstawowe slither który miał w swojej setup.py, sam atrybut test_suite jak wspomniano powyżej. Następnie umieściłem źródło pakietu pod numerem env1/src.

Jeśli zajrzał env1/src, można zobaczyć:

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 

mogę uruchomić testy z użyciem test komendy:

(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 

Albo mogę uruchomić te same testy z nosetests:

(env1)$ pushd src 
(env1)$ nosetests slither/ 
.. 
Ran 2 tests in 0.007s 
OK 
(env1)$ popd 

Należy również pamiętać, że nosetests c być wybrednym w kwestii plików wykonywalnych. Możesz przekazać --exe, jeśli chcesz wykryć testy w modułach Pythona, które są wykonywalne.

9

Mam podobny problem. Poniższy obejście pomógł:

python `which nosetests` 

(zamiast po prostu nosestests)

+0

To działało dla mnie. Dzięki. – ashic

58

Trzeba mieć kopię zainstalowanego w środowisku wirtualnym nosa. Aby wymusić instalację nosa do virtualenv, mimo że jest już zainstalowany na światowych site-packages, prowadzonym pip install z flagą -I:

(env1)$ pip install nose -I 

Odtąd można po prostu uruchomić nosetests jak zwykle.

+12

Wydaje się, że może trzeba by odświeżyć virtualenv. Mianowicie, 'który nosetests' powinien wskazywać na plik wykonywalny wewnątrz virtualenv. –

+17

+1 To właśnie dla mnie zadziałało. Ponadto, jak Ceasar zaznacza, ja też musiałem odświeżyć virtualenv uruchamiając 'deactivate' a następnie reaktywacji. – Tom

+2

powinno to być zaakceptowane odpowiedź !!! – ducin

0

Być może jest to ostatnia zmiana, ale dla mnie, kiedy zainstalowałem testy nosa za pomocą pip, w programie .virtualenvs/<env>/bin zainstalowano test wykonywany przez testy nosa, które (co nie dziwi) działają poprawnie z virtualenv.

0

Być może masz nosetests zainstalowaną gdzieś w twoim PATH z wyższym priorytetem niż ten zainstalowany w twoim virtualenv. Szybkim sposobem dać moduł nose i skojarzonego nosetests skrypt zainstalowany w bieżącej virtualenv priorytetem jest, aby edytować PATH:

export PATH=/path/to/current/virtualenv/bin:$PATH 
7

w takiej samej sytuacji, że muszę przeładować virtualenv na ścieżce być poprawnie zaktualizowany:

deactivate 
env/bin/activate 
+0

To jest ten, który zrobił to za mnie. Każdy pomysł, dlaczego musisz ponownie aktywować po zainstalowaniu nosa (lub nose2, w moim przypadku)? – hansmosh

+0

@hansmosh, nie można teraz przetestować, warto sprawdzić wszystkie ścieżki –

1

Jeśli wszystko inne zawiedzie, spróbuj zainstalować w swoim venv nosa i/lub uruchomić nosetests-2.7. Wierzę @ odpowiedź andrea-Zonca ma taki sam skutek, jeśli venv python 2.7

Powiązane problemy