web-dev-qa-db-fra.com

Spécifiez où installer les dépendances 'tests_require' d'un package de distribution / setuptools

Quand je lance python setup.py test les dépendances répertoriées dans tests_require dans setup.py sont téléchargés dans le répertoire courant. Quand je lance python setup.py install, les dépendances répertoriées dans requires sont plutôt installées dans site-packages.

Comment puis-je avoir ces tests_require dépendances installées à la place dans site-packages?

43
Danny Navarro

Vous ne pouvez pas spécifier où les exigences de test sont installées. L'intérêt du paramètre tests_require est de spécifier des dépendances qui ne sont pas requises pour l'installation du package, mais uniquement pour l'exécution des tests (comme vous pouvez l'imaginer, de nombreux consommateurs voudront peut-être installer le package mais ne pas exécuter les tests). Si vous souhaitez que les exigences de test soient incluses lors de l'installation, je les inclurais dans le paramètre install_requires. Par exemple:

test_requirements = ['pytest>=2.1', 'dingus']
setup(
    # ...
    tests_require = test_requirements,
    install_requires = [
        # ... (your usual install requirements)
    ] + test_requirements,
)

Pour autant que je sache, il n'y a aucun paramètre que vous pouvez passer pour forcer ce comportement sans changer le script de configuration.

48
Jason R. Coombs

Vous pouvez utiliser un virtualenv pour éviter cela et installer les packages supplémentaires à leurs emplacements par défaut, à l'intérieur de lib/pythonX/site-packages. Tout d'abord, vous devez définir vos exigences de test comme des extras, dans setup.py:

setup(
    # ...
    install_requires=[
        # ... (your usual install requirements)
    ],
    extras_require={
        'testing': [
            # ... (your test requirements)
        ]
    },
)

Installez ensuite votre package avec des exigences de test comme celle-ci:

pip install -e ".[testing]"
22
Tiberiu Ichim

J'utilise pip pour réaliser quelque chose comme ça. Au lieu d'ajouter tests_requires ou extras à mon setup.py, j'ai créé un fichier d'exigences pip .

Exemple de mon fichier dev_requirements.txt :

pytest
webtest

Ensuite, pour l'installer, exécutez:

$ pip install -r dev_requirements.txt
15
schettino72