wheel easy_install all python virtualenv setuptools distribute

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 ).