Pregunta

Soy incapaz de utilizar la nariz (nosetests) en un proyecto virtualenv - que parece que no puede encontrar los paquetes instalados en el entorno virtualenv

.

Lo curioso es que puedo ajustar

test_suite = 'nose.collector'

en setup.py y ejecute las pruebas muy bien como

python setup.py test

pero cuando se ejecuta nosetests recta, hay todo tipo de errores de importación.

Lo he intentado tanto con una instalación de todo el sistema de la nariz y un paquete virtualenv nariz y sin suerte.

¿Alguna idea?

Gracias !!

¿Fue útil?

Solución

¿Es capaz de ejecutar myenv/bin/python /usr/bin/nosetests? Eso debería funcionar nariz utilizando el conjunto de la biblioteca del entorno virtual.

Otros consejos

Es necesario tener una copia de la nariz instalado en el entorno virtual. Con el fin de obligar a la instalación de la nariz en el virtualenv, a pesar de que ya está instalado en el site-packages global, ejecute pip install con la bandera -I:

(env1)$ pip install nose -I

A partir de entonces sólo se puede ejecutar nosetests como de costumbre.

En la misma situación que necesitaba para recargar la virtualenv para el camino que se ha actualizado correctamente:

deactivate
env/bin/activate

Tengo un problema similar. La siguiente solución ayudó:

python `which nosetests` 

(en lugar de sólo nosestests)

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"

He creado un paquete muy básico slither que tenía, en su setup.py, test_suite mismo atributo como se ha mencionado anteriormente. Entonces coloqué el origen del paquete bajo env1/src.

Si se miraba en el interior test, verías:

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 nosetests subcomando:

(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, que puede ejecutar las mismas pruebas con --exe:

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

También tenga en cuenta que <=> puede ser exigente con los ejecutables. Puede pasar <=> si lo desea para descubrir pruebas en módulos de Python que sean ejecutables.

Si todo lo demás falla, intente instalar la nariz en su Venv, y / o ejecutar nosetests-2.7. Creo que la respuesta de @ andrea-Zonca tiene el mismo efecto si su pitón Venv es 2,7

Tal vez esto es un cambio reciente, pero para mí, cuando he instalado nosetests a través de pepita, hubo un nosetests ejecutables instalados en .virtualenvs/<env>/bin, que (como era de esperar) funciona correctamente con el virtualenv.

Es posible que tenga una nosetests que se instala en otro lugar en su PATH con mayor prioridad que la instalada en su virtualenv. Una forma rápida para dar el nose módulo y asociada <=> guión instalado en su máxima prioridad actual es virtualenv para editar su <=>:

export PATH=/path/to/current/virtualenv/bin:$PATH
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top