Frage

Ich bin nicht in der Lage Nase (nosetests) in einem virtualenv Projekt zu verwenden - es kann nicht die Pakete in der virtualenv Umgebung installiert zu finden scheint

.

Das Merkwürdige ist, dass ich einstellen

test_suite = 'nose.collector'

in setup.py und die Tests laufen gerade fein wie

python setup.py test

aber wenn nosetests gerade ausgeführt wird, gibt es alle Arten von Importfehler.

Ich habe versucht, es sowohl mit einem systemweiten Installation von Nase und einem virtualenv Nase Paket und kein Glück.

Alle Gedanken?

Danke !!

War es hilfreich?

Lösung

Sind Sie in der Lage myenv/bin/python /usr/bin/nosetests zu laufen? Das sollte Nase mit der virtuellen Umgebung des Bibliothekssatz ausgeführt werden.

Andere Tipps

Sie müssen eine Kopie der Nase in der virtuellen Umgebung installiert sein. Um die Installation der Nase in die virtualenv zu zwingen, obwohl es bereits in den globalen Website-Paketen installiert ist, führen pip install mit der -I Flagge:

(env1)$ pip install nose -I

Von da an einfach nosetests wie gewohnt ausgeführt werden kann.

In der gleichen Situation musste ich die virtualenv nachladen für den Pfad korrekt aktualisiert werden:

deactivate
env/bin/activate

Ich habe ein ähnliches Problem. Die folgende Problemumgehung geholfen:

python `which nosetests` 

(statt nur nosestests)

Hier ist, was für mich funktioniert:

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

habe ich ein wirklich Basispaket slither die gleiche setup.py Attribut in seiner test_suite, hatte, wie sie oben erwähnt wurde. Dann stellte ich die Paketquelle unter env1/src.

Wenn Sie in env1/src sehen, würden Sie sehen:

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 

Ich kann die Tests mit test subcommand ausführen:

(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

Oder kann ich die gleichen Tests mit nosetests laufen:

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

Beachten Sie auch, dass nosetests kann über ausführbare Dateien wählerisch sein. Sie können --exe passieren, wenn Sie es wollen entdecken Tests in Python-Modulen, die ausführbar sind.

Wenn alle Stricke reißen, versuchen Nase in Ihrem Venv Installation und / oder nosetests-2.7 laufen. Ich glaube @ andrea-Zonca Antwort die gleiche Wirkung hat, wenn Ihr Venv Python 2.7

ist

Vielleicht ist dies eine neue Änderung, aber für mich, wenn ich nosetests durch pip installiert ist, war es ein nosetests ausführbare in .virtualenvs/<env>/bin installiert, die (wenig überraschend) korrekt mit dem virtualenv arbeitet.

Sie können eine nosetests haben, die woanders in Ihrem PATH mit höherer Priorität installiert ist als die in Ihrem virtualenv installiert. Ein schneller Weg, um die nose Modul und dazugehörigen nosetests Skript installierte in Ihrer aktuellen virtualenv höchsten Priorität zu geben, ist Ihren PATH zu bearbeiten:

export PATH=/path/to/current/virtualenv/bin:$PATH
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top