web-dev-qa-db-fra.com

Comment installer un paquet avec la plage de versions min et max?

Je me demande s’il est possible de dire à pip, en particulier dans un fichier de configuration, d’installer un paquet ayant à la fois une version minimale (pip install package>=0.2) Et une version maximale qui ne devrait jamais être installée (api théorique: pip install package<0.3).

Je pose la question parce que j'utilise une bibliothèque tierce en développement actif. J'aimerais que mon fichier d'exigences pip spécifie qu'il doit toujours installer la version mineure la plus récente de la branche 0.5.x, mais je ne veux pas que pip essaye d'installer une nouvelle version majeure (telle que 0.6.x), car l'API est différent. Ceci est important car, même si la branche 0.6.x est disponible, les développeurs publient toujours des correctifs et des corrections de bugs sur la branche 0.5.x. Par conséquent, je ne souhaite pas utiliser une ligne statique package==0.5.9 Dans mon fichier de configuration. .

Y'a-t'il un quelconque moyen d'y arriver?

186
CoreDumpError

Tu peux faire:

$ pip install "package>=0.2,<0.3"

Et pip cherchera la meilleure correspondance, en supposant que la version est au moins égale à 0,2 et inférieure à 0,3.

Ceci s’applique également à pip fichiers d’exigences . Voir les détails complets sur les spécificateurs de version dans PEP 44 .

238
Hugo Tavares

vous pouvez aussi utiliser:

pip install package==0.5.*

ce qui est plus cohérent et facile à lire.

55
lowrin

Une méthode élégante consisterait à utiliser le ~= opérateur de libération compatible selon PEP 44 . Dans votre cas, cela équivaudrait à:

package~=0.5.0

Par exemple, si les versions suivantes existent, il choisirait 0.5.9:

  • 0.5.0
  • 0.5.9
  • 0.6.0

Pour plus de précision, chaque paire est équivalente:

~= 0.5.0
>= 0.5.0, == 0.5.*

~= 0.5
>= 0.5, == 0.*
44
Moritz