Probleme mit der Nase in einem virtualenv
-
21-08-2019 - |
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 !!
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
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