Question install_requires basé sur la version de python


J'ai un module qui fonctionne à la fois sur Python 2 et Python 3. Dans Python <3.2, je voudrais installer un paquet spécifique en tant que dépendance. Pour Python> = 3.2.

Quelque chose comme:

 install_requires=[
    "threadpool >= 1.2.7 if python_version < 3.2.0",
 ],

Comment peut-on faire ça?


25
2018-01-13 00:19


origine


Réponses:


setuptools a un support pour cela en utilisant marqueurs d'environnement.

install_requires=[
    'enum34;python_version<"3.4"',
    'pywin32 >= 1.0;platform_system=="Windows"'
]

L'utilisation de ceci est détaillée dans le documentation officielle. Basé sur changer le journal a été ajouté dans v20.5, mais l'implémentation n'était pas stable jusqu'à la v20.8.1 (qui n'était qu'un décalage de 15 jours).


Réponse originale (toujours valide, mais pourrait être obsolète à l'avenir):

setuptools a un soutien pour cela en utilisant dans le extras_require argument.

Le format est le suivant:

extras_require={
    ':python_version=="2.7"': ["mock"],
},

Il soutiendra les autres opérateurs de comparaison.


Malheureusement, il n'est pas mentionné dans le Documentation. En cherchant des réponses, j'ai trouvé PEP-426 parler de "marqueurs d'environnement". Avec cette phrase, j'ai pu trouver un billet setuptools avec le commentaire suivant:

J'ai utilisé avec succès la fonctionnalité de marqueurs pour exiger sélectivement et de manière déclarative une dépendance. Voir backports.unittest_mock à titre d'exemple. À travers les «extras», mock sera requis, mais seulement sur Python 2. Quand je peux compter sur Setuptools 17.1, je peux changer cette dépendance en python_version < "3.3".


41
2017-09-18 02:59



Cela a été discuté ici, il semblerait que la méthode recommandée soit de tester la version Python dans votre setup.py en utilisant sys.version_info;

import sys

if sys.version_info >= (3,2):
    install_requires = ["threadpool >= 1.2.7"]
else:
    install_requires = ["threadpool >= 1.2.3"]

setup(..., install_requires=install_requires)

10
2018-01-13 00:28