web-dev-qa-db-fra.com

Application de la version python dans setup.py

Actuellement, nous configurons\installant certains packages sur le système en mentionnant leur version et leurs dépendances dans setup.py sous l'attribut install_requires. Notre système nécessite python 2.7. Parfois, les utilisateurs ont plusieurs versions de python disons 2.6.x et 2.7, certains packages sont déjà disponibles mais en fait sur le système disponible sous la liste des packages du site 2.6. Certains utilisateurs ont également 2.6 uniquement, comment appliquer à partir de setup.py ou existe-t-il une autre façon de dire de n'avoir que python 2.7 et tous les packages que nous que setup.py mette à jour ne concerne que la version 2.7. Nous avons besoin d'un minimum de 2.7 sur la machine pour exécuter notre code.

Merci! Santhosh

36
Santhosh

Comme le setup.py le fichier est installé via pip (et pip lui-même est exécuté par l'interpréteur python) il n'est pas possible de spécifier lequel Python version à utiliser dans le setup.py fichier.

Au lieu de cela, jetez un œil à cette réponse à setup.py: restreignez la version autorisée de l'interpréteur python qui a une solution de base pour arrêter l'installation.

Dans votre cas, le code serait:

import sys
if sys.version_info < (2,7):
    sys.exit('Sorry, Python < 2.7 is not supported')
14
Ewan

La meilleure pratique actuelle (au moment d'écrire ces lignes en mars 2018) consiste à ajouter un argument python_requires Directement à l'appel de setup() dans setup.py:

from setuptools import setup

[...]

setup(name="my_package_name",
      python_requires='>3.5.2',
      [...]

Notez que cela nécessite setuptools> = 24.2.0 et pip> = 9.0.0; voir la documentation pour plus d'informations.

129
Aaron V