Que pouvons-nous mettre dans un fichier setup.py
pour empêcher le pip de collecter et d'essayer d'installer un paquet en utilisant une version Python non supportée?Empêcher l'installation du paquet sur les anciennes versions de Python
Par exemple magicstack
est un projet répertorié avec le classificateur Trove:
Programming Language :: Python :: 3 :: Only
donc je pense le comportement suivant si pip --version
est lié à Python 2.7:
$ pip install magicstack
Collecting magicstack
Could not find a version that satisfies the requirement magicstack (from versions:)
No matching distribution found for magicstack
Mais le comportement réel est que pip recueille une version, la télécharge, tente de l'installer et échoue. Il existe par exemple d'autres versions de Python3, par exemple curio
, qui s'installent correctement - car le setup.py
n'utilisait rien de particulier à Python 3 - mais il échouait au moment de l'importation lorsqu'une syntaxe Python 3 seulement était utilisée. Et je suis sûr qu'il y a des paquets qui installent OK, importent OK, et peut-être seulement échouer à l'exécution!
Quelle est la méthode correcte pour spécifier vos versions Python prises en charge d'une manière que pip va respecter? J'ai trouvé une solution de contournement, consistant à télécharger uniquement un fichier de roue, et à refuser de télécharger une distribution .tar.gz, mais je serais intéressé de connaître le correctif approprié.
Edit: Comment ne sait pas pip télécharger la distribution de roue si le Python/os/architecture ne correspond pas à? Utilise-t-il simplement le .whl filename convention ou y a-t-il quelque chose de plus sophistiqué que ce qui se passe dans les coulisses? Pouvons-nous en quelque sorte donner les métadonnées à une distribution source pour faire pip faire la bonne chose avec les téléchargements .tar.gz?
Je ne sais pas s'il s'agit de la réponse _right_ ... mais si 'magicstack' est python3 uniquement parce que' setup.py' échoue sur python2.x, alors il semble que l'une des façons possibles de faire ce travail est de forcer votre 'setup.py' à échouer sur les versions python inappropriées ... – mgilson
Hacky. Si pip est lié à un interpréteur Python non supporté, je ne veux pas que le paquet soit collecté ou téléchargé du tout, encore moins une installation tentée en exécutant 'setup.py'. – wim
Google apparaît certains [précédent] (http://stackoverflow.com/questions/13924931/setup-py-restrict-the-allowable-version-of-the-python-interpreter) [questions] (http: // stackoverflow .com/questions/13385337/distribute-distutils-spécifiez-python-version) avec des réponses disant que votre 'setup.py' vérifie la version de Python. – user2357112