python - easy_install - ¿Cómo fuerzo a `setup.py test` para instalar dependencias en mi` virtualenv`?
setuptools (2)
Por diseño, no puede hacer que los tests_requires
o setup_requires
entradas entren en el entorno virtual. La idea es separar lo que se requiere para realizar pruebas / configuración y lo que se requiere para usar realmente el paquete que se está instalando. Por ejemplo, puedo requerir que el módulo de "cobertura" sea necesario para ejecutar pruebas en mi paquete, pero ninguno de mis códigos lo utiliza en el paquete. Por lo tanto, si no tuviera la "cobertura" en mi entorno cuando voy a realizar las pruebas, no quisiera que la "cobertura" se instale en el entorno si mi paquete no lo necesitara.
En una cruzada para hacer que mi aplicación sea instalable en pip
, estoy luchando grandes peleas con setuptools
y distribute
. Supongo que mis dependencias son correctas, es decir, la instalación con pip install myapp
probablemente debería llenar el entorno virtual correctamente. Sin embargo, me gustaría optimizar el desarrollo mientras estoy en ello, así que mi objetivo es comenzar con un virtualenv
vacío y hacer que setup.py test
(y luego setup.py develop
, pero esa es una pelea completamente diferente) llénelo con Todas las dependencias definidas.
Y ahora a mi problema: no importa cuánto lo intente, todo lo que obtengo son dependencias instaladas como .egg
s en el directorio de mi proyecto, que por lo menos no son óptimas. Intenté crear un nuevo comando setuptools
que usaría pip
(que parece funcionar, aunque de manera incómoda) pero que no puede ser la solución seria (subclase y anulación).
Entonces, ¿cómo hago que setup.py test
llene el virtualevn
lugar de mi directorio de trabajo?
Si está utilizando setuptools
, puede especificar dependencias de prueba usando el argumento de palabra clave tests_require
para el método de setup
.
from setuptools import setup
setup(
name=''your-package-name'',
version=''1.0.0'',
author=''me'',
author_email=''[email protected]'',
install_requires=[''Pygments>=1.4''],
tests_require=[''nose''],
packages=[
''your_package_name'',
],
)
Cuando ejecute la python setup.py test
, esto buscará la nose
y lo instalará en el virtualenv
actualmente activo usando pip
si aún no está disponible.
Tenga en cuenta que este argumento se ignorará si está utilizando distribute.core.setup
(tampoco estará disponible un comando de test
).