Problemas al usar nose en un virtualenv
No puedo usar nose (nosetests) en un proyecto virtualenv - parece que no puede encontrar los paquetes instalados en el entorno virtualenv.
Lo extraño es que puedo establecer
test_suite = 'nose.collector'
En setup.py y ejecutar las pruebas bien como
python setup.py test
Pero al ejecutar nosetests directamente, hay todo tipo de errores de importación.
Lo he probado con una instalación de nose en todo el sistema y un paquete de nose virtualenv y sin suerte.
Cualquiera ¿pensamientos?
Gracias!!
8 answers
¿Puedes ejecutar myenv/bin/python /usr/bin/nosetests
? Eso debería ejecutar Nose usando el conjunto de bibliotecas del entorno virtual.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-05-14 18:32:54
Necesita tener una copia de nose instalada en el entorno virtual. Para forzar la instalación de nose en el virtualenv, aunque ya esté instalado en los paquetes de sitio globales, ejecute pip install
con la bandera -I
:
(env1)$ pip install nose -I
A partir de entonces, solo puede ejecutar nosetests
como de costumbre.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-05-07 02:35:46
Tengo un problema similar. La siguiente solución ayudó:
python `which nosetests`
(en lugar de solo nosestests
)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-03-23 18:35:21
En la misma situación necesitaba recargar el virtualenv
para que la ruta se actualizara correctamente:
deactivate
env/bin/activate
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-09-17 21:54:09
Esto es lo que funciona para mí:
$ 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"
Creé un paquete realmente básico slither
que tenía, en su setup.py
, el mismo atributo test_suite
que mencionaste anteriormente. Luego coloqué la fuente del paquete bajo env1/src
.
Si miraras dentro env1/src
, verías: {[14]]}
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
Puedo ejecutar las pruebas usando el subcomando test
:
(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
O, puedo ejecutar las mismas pruebas con nosetests
:
(env1)$ pushd src
(env1)$ nosetests slither/
..
Ran 2 tests in 0.007s
OK
(env1)$ popd
También tenga en cuenta que nosetests
puede ser exigente con los ejecutables. Puede pasar --exe
si lo desea descubre pruebas en módulos python que son ejecutables.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-05-14 21:30:32
Si todo lo demás falla, intente instalar nose en su venv, y/o ejecute nosetests-2.7
. Creo que la respuesta de @andrea-zonca tiene el mismo efecto si tu venv python es 2.7
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-09-24 00:51:41
Quizás este sea un cambio reciente, pero para mí, cuando instalé nosetests a través de pip, había un ejecutable nosetests instalado en .virtualenvs/<env>/bin
, que (como era de esperar) funciona correctamente con virtualenv.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-09-07 01:55:32
Es posible que tenga un nosetests
instalado en otro lugar de su PATH
con mayor prioridad que el instalado en su virtualenv. Una forma rápida de darle al módulo nose
y al script asociado nosetests
instalado en su virtualenv actual la máxima prioridad es editar su PATH
:
export PATH=/path/to/current/virtualenv/bin:$PATH
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-06-06 17:18:33